Two notes:
- Udev rules overflow past viewport on mobile.
--stable
argument can be removed.
It should work either way but it has been broken in the recent past either way (for different reasons) i.e. no guarantee that it will work either way. I’m assuming that the plain stable hash will be fixed sooner rather than later.
I decided that “stable” should be more “true to name” i.e. more likely to be stable and working. So I left it there.
(Technically speaking, I wasn’t the one who added that. It was added by A N Other between my first batch of changes and my second batch of changes.)
Unfortunate. But the reality is that you do need another computer in order to carry out this procedure and most people will be doing it on a desktop / laptop with a full size screen. You can’t carry out this procedure on the phone that you will be reflashing.
Okay, well here are alternative instructions for installing the udev rules:
sudo nano /etc/udev/rules.d/70-librem5-flash-image.rules
SUBSYSTEM!="usb", GOTO="librem5_devkit_rules_end"
# Devkit USB flash
ATTR{idVendor}=="1fc9", ATTR{idProduct}=="012b", GROUP+="plugdev", TAG+="uaccess"
ATTR{idVendor}=="0525", ATTR{idProduct}=="a4a5", GROUP+="plugdev", TAG+="uaccess"
ATTR{idVendor}=="0525", ATTR{idProduct}=="b4a4", GROUP+="plugdev", TAG+="uaccess"
ATTR{idVendor}=="316d", ATTR{idProduct}=="4c05", GROUP+="plugdev", TAG+="uaccess"
LABEL="librem5_devkit_rules_end"
sudo udevadm control --reload-rules
I believe you don’t even need the udev
rules if you prefix the use of the script when doing the actual reflash with sudo
which is what I did.
Are you aware of any updated tutorials for making sure your firmware is all updated?
You are already aware of it:
I am certain there are more unlisted firmware, but instructions for updating them to their latest versions on the Librem 5 are not available.
Thank you. I could not build all of the dependencies from your previous helpful post. Therefore the “instructions” are incomplete or possibly inaccurate, from my perspective.
Create a separate topic and I will address your issue.
I am not aware of one. Unless you are actually experiencing a problem, it may not be a good idea to change firmware, particularly if you won’t be able to go backwards. In other words, your starting point would be to download the version that you currently have.
dos gave you two more.
I would be inclined to drop uboot
off that list. Running the reflashing script should automatically get you the latest uboot
and no further action is required.
The firmware jail is more complex if you have an original phone i.e. there is no firmware jail, and that isn’t the way to mess with the Redpine firmware. By contrast, if you have a phone that came with or was upgraded to a SparkLAN card then you have a firmware jail and that is the way to update the SparkLAN firmware. If you have an original phone then with care you may be able to create the firmware jail and make the necessary changes so that it is used with Redpine (but I haven’t bothered).
The BM818 firmware is only on that list theoretically, since Purism has not made any information public as to how you get an updated firmware file and how you get it into the modem.
So here would be my updated list:
I have only tackled the first two on my phone.
This was one of my very first posts on the Purism community forums, and has lost its ability to edit a long time ago. Maybe the post edit window could be extended to a more generous duration or changed to indefinite.
The instructions have been unofficially disseminated since:
Not by me it can’t. I don’t have that level of administrative access. I would recommend just making an updated post in that topic.
None of this worked for me!
Looking for librem5r4 luks byzantium image
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 462, in get_job_info
response = self.jenkins_open(requests.Request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 564, in jenkins_open
return self.jenkins_request(req, add_crumb, resolve_auth).text
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 580, in jenkins_request
self.maybe_add_crumb(req)
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 369, in maybe_add_crumb
response = self.jenkins_open(requests.Request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 564, in jenkins_open
return self.jenkins_request(req, add_crumb, resolve_auth).text
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 583, in jenkins_request
self._request(req))
^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 557, in _request
return self._session.send(r, **_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 483, in send
timeout = TimeoutSauce(connect=timeout, read=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urllib3/util/timeout.py", line 119, in __init__
self._connect = self._validate_timeout(connect, "connect")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urllib3/util/timeout.py", line 156, in _validate_timeout
raise ValueError(
ValueError: Timeout value connect was <object object at 0x7c18af9444d0>, but it must be an int, float or None.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/user/librem5-flash-image/./scripts/librem5-flash-image", line 538, in <module>
sys.exit(main())
^^^^^^
File "/home/user/librem5-flash-image/./scripts/librem5-flash-image", line 464, in main
image_ref = find_image(args.image_job, board, args.variant, args.dist, args.stable)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/librem5-flash-image/./scripts/librem5-flash-image", line 275, in find_image
return find_image_jenkins(jobname, board, variant, dist)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/librem5-flash-image/./scripts/librem5-flash-image", line 224, in find_image_jenkins
info = server.get_job_info(jobname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins/__init__.py", line 475, in get_job_info
raise JenkinsException(
jenkins.JenkinsException: Could not parse JSON info for job[Images/Image Build]
–
If I use --stable it’s the same only preceded by:
Found disk image Build “stable” ‘Last stable librem5r4 build’ from Fri Jun 23 22:21:4
0 2023
before the output listed above. Even --skip-download and pointing to the home directory for manually installing the librem5r4.img alongside u-boot-librem5.imx and STILL yields the same results.
To note I am using Ubuntu but have also tried the suggested PureOS live USB option after much unrelated trouble getting balena-etcher to work only to find out there are no Wi-Fi drivers (not referenced in the suggested instructions) so that option is out the window (if it even makes a difference) unless I can figure out how to download/install drivers.
What version?
I use Ubuntu and I have successfully reflashed my phone. At this exact moment I have Ubuntu 22.04 LTS but it is badgering me for the official upgrade jump to 24.04 LTS as of the last few days.
Ubuntu Studio 24.04.1 LTS
Use Debian 12 ‘Bookworm’ instead on a USB drive and let us know if it makes any difference.
Thank you! I had the ISO downloaded anticipating I could give it a go. I re-imaged the USB drive and it worked without a hitch!! I would note that in addition to the python3-jenkins and python3-tqdm uuu will also need to ensure python3-yaml is installed as well for anyone who needs to do the same.
Feels great to finally have my Librem 5 up and running again!
Why does the script fail to find any image at all???
xxx@xxx:~/librem5-flash-image$ ./scripts/librem5-flash-image --skip-cleanup
2024-09-30 08:05:11 INFO Looking for librem5r4 plain byzantium image
2024-09-30 08:05:21 ERROR No matching image found
xxx@xxx:~/librem5-flash-image$ ./scripts/librem5-flash-image --variant luks --skip-cleanup
2024-09-30 08:06:05 INFO Looking for librem5r4 luks byzantium image
2024-09-30 08:06:15 ERROR No matching image found
xxx@xxx:~/librem5-flash-image$ ./scripts/librem5-flash-image --variant plain --skip-cleanup
2024-09-30 08:06:40 INFO Looking for librem5r4 plain byzantium image
2024-09-30 08:06:50 ERROR No matching image found
I’ve got everything installed on the computer according to the instructions, and I’ve already reflashed this way on this computer a couple of times in the past.
EDIT: And using the --stable
argument results in:
xxx@xxx:~/librem5-flash-image$ ./scripts/librem5-flash-image --variant luks --stable
usage: librem5-flash-image [-h] [--dir DIR] [--dist DIST] [--skip-cleanup]
[--skip-flash]
[--download-attempts DOWNLOAD_ATTEMPTS]
[--variant {plain,luks}]
[--board {devkit,librem5r2,librem5r3,librem5r4}]
[--debug] [--image-job IMAGE_JOB]
[--uboot-job UBOOT_JOB] [--udev]
librem5-flash-image: error: unrecognized arguments: --stable
Sorry. You probably know this but are you actually in the “librem5-flash-image” folder when you execute the script?
xxx@xxx:~/librem5-flash-image$ ./scripts/librem5-flash-image --variant luks --skip-cleanup
Are you sure the Github repo is correct? (I am trying to be helpful).