gpdaniels / spike-prime

Experiments with the LEGO Mindstorms (51515) and SPIKE Prime (45678)
MIT License
285 stars 39 forks source link

LEGO Technic Small Hub (45609) Firmware and FIlesystem #24

Open gpdaniels opened 3 years ago

gpdaniels commented 3 years ago

There's now a small version of the SPIKE prime hub which probably runs a different firmware and has a different filesystem. See: https://education.lego.com/en-us/products/lego-technic-small-hub/45609

It would be good to keep a record of these.

If you have one please get in touch!

tonyxforce commented 3 months ago

Our school has one, and i can maybe dump it's firmware

gpdaniels commented 3 months ago

Thanks for the offer! I've got one dump so far, filesystem here: https://github.com/gpdaniels/spike-prime/tree/master/filesystem/spike%20essential%20-%20v1.0.00.0070-51a2ff4%20-%203.1.21

But it would be great to have newer versions.

tonyxforce commented 3 months ago

Currently the only problem seems to be that we only have windows (10) laptops at our school, maybe i can try booting into a live enviroment but if i remember correctly i've tried and failed

Is there a way to dump the firmware on windows?

gpdaniels commented 3 months ago

I suspect the dfu-util from https://dfu-util.sourceforge.net/ will work. With the file from that I can reformat the file to match the others easy enough, it's just this step that I can't do without the actual hardware:

dfu-util --alt 0 --dfuse-address 0x08000000:1048576 --upload firmware.bin
tonyxforce commented 3 months ago
--upload firmware.bin

wouldn't this write to the hardware?

gpdaniels commented 3 months ago

I thought that when I first started using it too, but for dfu-util upload means from device to computer.

Usage: dfu-util [options] ...
  -h --help         Print this help message
  -V --version          Print the version number
  -v --verbose          Print verbose debug statements
  -l --list         List currently attached DFU capable devices
  -e --detach           Detach currently attached DFU capable devices
  -E --detach-delay seconds Time to wait before reopening a device after detach
  -d --device <vendor>:<product>[,<vendor_dfu>:<product_dfu>]
                Specify Vendor/Product ID(s) of DFU device
  -p --path <bus-port. ... .port>   Specify path to DFU device
  -c --cfg <config_nr>      Specify the Configuration of DFU device
  -i --intf <intf_nr>       Specify the DFU Interface number
  -S --serial <serial_string>[,<serial_string_dfu>]
                Specify Serial String of DFU device
  -a --alt <alt>        Specify the Altsetting of the DFU Interface
                by name or by number
  -t --transfer-size <size> Specify the number of bytes per USB Transfer
  -U --upload <file>        Read firmware from device into <file>
  -Z --upload-size <bytes>  Specify the expected upload size in bytes
  -D --download <file>      Write firmware from <file> into device
  -R --reset            Issue USB Reset signalling once we're finished
  -s --dfuse-address <address>  ST DfuSe mode, specify target address for
                raw file download or upload. Not applicable for
                DfuSe file (.dfu) downloads
tonyxforce commented 3 months ago

Ah thanks, i will be next there in monday and i'll try getting the firmware but i can't promise anything

tonyxforce commented 3 months ago

So i ran the command you gave me and it gave me an error, but after installing the winUSB driver it completed successfully

I can't upload files here directly so i will upload it to my website and link it here

tonyxforce commented 3 months ago

Sorry for taking too long, we were at the WRO competition

so i dumped 2 large and 1 small hub's firmware, and the links for them are: https://tonyxforce.hu/hub/smallhub_firmware.bin https://tonyxforce.hu/hub/largehub1_firmware.bin https://tonyxforce.hu/hub/largehub2_firmware.bin

gpdaniels commented 3 months ago

There's no rush. Running the rest of the steps to process the files I get these hashes:

largehub1 = 109c3e2589c8171f244ec740338b9df3
largehub2 = 0f07e0609371ae308687a63ed5aa5fb7
smallhub  = f086fc1f95f6c8dda4dd4467641519d3

Interesting that the two large hubs have different versions.

It would be really handy to have the filesystems to go with them, these can be dumped using rshell (which can be installed using pip).

tonyxforce commented 3 months ago

the problem is that i don't think i'll ever have access to these hubs anymore, for some reasons so getting any more info from these aren't really possible

maybe, maybe i can get to school in the summer but it's not really probable

maybe the hubs create the filesystem on boot, if that's the case the FS can maybe be regenerated with recreating some of the hardware and hoping for the best