Flashing to Byzantium

gantz@localhost:~> mv ~/.local/bin/uuu ~/bin
mv: cannot stat '/home/gantz/.local/bin/uuu': Not a directory

Do I have to download it again? I moved it to some bin folder as you told me to but I cannot find it anymore.

Ok, that’s all done.

Ah, the old mv to non-existent directory problem. Presumably.

Presumably ~/.local exists as a directory but ~/.local/bin does not exist as a directory. So when you did

mv uuu ~/.local/bin

You created a regular file bin in the ~/.local directory and this file bin is actually the uuu executable.

So instead of mv ~/.local/bin/uuu ~/bin you want

mv ~/.local/bin ~/bin/uuu

but you should first confirm that ~/.local/bin is a regular file.

Also, you should always use which uuu to confirm that what you just did to move an executable into your path did actually work.

This is why I hate using terminal for moving or copying files. It’s too easy to make a mistake.
I don’t have a folder called local.

I just re-downloaded the file again. And moved it to /Home/bin folder.

Alright this is looking promising.

1 Like

I hope that USB type A to USB type C cable will work because I don’t have type C port on my desktop.

1 Like

Should be fine.

I’ve done a few of this type of operation with my Librem 5 (but not “flashing to Byzantium”) and I also don’t have a type C port on my desktop.

I have a small USB-A to USB-C adapter i.e. converts one of my USB-A ports into a USB-C port - but I don’t think there is a lot of difference between that and a cable. I think both of them would be “passive” adapters.

1 Like

That didn’t work. The LED was flashing with all possible colours and the flashing script didn’t even finish. The phone is still on amber.

I have to wait for the script to re-download the image again. This is ridiculous.

I don’t understand now if it succeeded or not. Why are there so many lines of the same text? Purism’s website says I should see soemthing like

uuu (Universal Update Utility) for nxp imx chips – libpureos/1.2.91+0git6b465-62-g9c56e46

Success 1 Failure 0

But that’s not what I have.

Progress indicator? and it’s not working properly in your terminal? i.e. instead of refreshing the line on the screen in place, it keeps on generating a new line of output. This however would be a cosmetic issue only.

Disclaimer (as above): I have not (yet) done a “flashing to byzantium”.

It appears that it worked. I have some new icons on there and I can turn on and OFF bluetooth, wifi and flash-light using the quick settings bar. Pretty sure this was not possible in Amber. In addition I’m able to change my background blimey! Well I’m glad it’s over. This was absolutely atrocious experience so thank you @irvinewade @libwood for helping with this. I really don’t think they needed to install parental controls on this phone because because non-Linux admin people won’t be able to do much on this phone for foreseeable future.

lsb_release -a | grep Codename:

You shouldn’t have to guess.

Kids often know more than their parents. :wink:

I think it would be acknowledged by Purism that the absence of an actual upgrade procedure (at all, never mind about via a GUI) is not user-friendly. Rome wasn’t built in a day.


You’re welcome. Sorry i messed up your move command. I think last time there was a big forum thread someone made a git issue to improve the doc for other distros. I found the parental controls pretty funny too. I’ve never opened it, but I don’t even get to set my own username so I don’t really know what it could do. Guess it’s play time.

Ideally there would be an upgrade solution presented through the software application.

That’s true for millennials only. And today almost all millennials 30 years old. They grew up during the time when personal computers started to become popular. So that’s not surprising.

Today if you meet your average teenager, they don’t even have a computer. They use smartphone or tablet for everything. Tell them to enable a program through firewall on a windows machine, they won’t have a clue what to do.

My point exactly - the context of the discussion was a smartphone.

I really don’t think they needed to install parental controls on this phone

Technology keeps on moving on - so that a younger generation is a native to a technology whereas the previous generation(s) have had to adapt.

Some of these posts on the site were quite helpful, along with the Librem docs. I finally flashed the phone again and it now has a gps program, a camera app and file manager :slight_smile:

Just put together a quick guide of how I set it up even without having the very newest version of Ubuntu :slight_smile:


Also, my instructions here: https://source.puri.sm/Librem5/community-wiki/-/wikis/Building-uuu-and-Jumpdrive

UsbC cable to plug in Librem5 to the computer (one you would regularly use to charge it).

That of course only works if you have a USB-C port on your computer. Otherwise you can use a USB-C to USB-A cable or the regular charging cable with a USB-C to USB-A adapter. The host to Librem 5 communications via USB don’t require anything fancy on the host side, so USB-A is fine.

1 Like

I didn’t say it has to be USBC on both ends. In fact my computer doesn’t have the USBC ports anywhere, it still worked, yes you are correct.

1 Like

In fact, USB-A to C cables are generally more reliable, as USB-C to C communication involves things like Power Delivery negotiations, which bring a quite sizeable failure surface on both host and device ends in that doesn’t exist when using a USB-A port.



today I tried reflashing the Librem 5 with the scripts available here:

And when the script is launched it outputs this error:

(lfi) ~/dev/librem5-flash-image >>> ./scripts/librem5-flash-image    ±[●][main]
2022-05-04 17:16:08 INFO Looking for librem5r4 plain byzantium image
2022-05-04 17:16:13 INFO Found disk image Build 11066 'plain librem5r4 byzantium image' from Wed May  4 02:30:43 2022
2022-05-04 17:16:15 INFO Found uboot Build 82 from Fri Sep 10 20:19:03 2021
2022-05-04 17:16:15 INFO Downloading to ./tmp_librem5-flash-image_k2emxmgr
2022-05-04 17:16:16 INFO Cleaning up.
Traceback (most recent call last):
  File "/home/antonio/dev/librem5-flash-image/./scripts/librem5-flash-image", line 475, in <module>
  File "/home/antonio/dev/librem5-flash-image/./scripts/librem5-flash-image", line 448, in main
    download_image(urljoin(image_ref['url'], 'artifact/{}.xz').format(IMAGE.format(board)),
  File "/home/antonio/dev/librem5-flash-image/./scripts/librem5-flash-image", line 185, in download_image
    meta = yaml.safe_load(resp.text)
  File "/home/antonio/dev/librem5-flash-image/lfi/lib/python3.10/site-packages/yaml/__init__.py", line 94, in safe_load
    return load(stream, SafeLoader)
  File "/home/antonio/dev/librem5-flash-image/lfi/lib/python3.10/site-packages/yaml/__init__.py", line 72, in load
    return loader.get_single_data()
  File "/home/antonio/dev/librem5-flash-image/lfi/lib/python3.10/site-packages/yaml/constructor.py", line 37, in get_single_data
    return self.construct_document(node)
  File "/home/antonio/dev/librem5-flash-image/lfi/lib/python3.10/site-packages/yaml/constructor.py", line 46, in construct_document
    for dummy in generator:
  File "/home/antonio/dev/librem5-flash-image/lfi/lib/python3.10/site-packages/yaml/constructor.py", line 398, in construct_yaml_map
    value = self.construct_mapping(node)
  File "/home/antonio/dev/librem5-flash-image/lfi/lib/python3.10/site-packages/yaml/constructor.py", line 204, in construct_mapping
    return super().construct_mapping(node, deep=deep)
  File "/home/antonio/dev/librem5-flash-image/lfi/lib/python3.10/site-packages/yaml/constructor.py", line 126, in construct_mapping
    if not isinstance(key, collections.Hashable):
AttributeError: module 'collections' has no attribute 'Hashable'

Is there anything I can verify?