Are there any logs from Booster?
Booster stucked in reboot cycle
Please pay attention.
Ilyich2011 I tested, that via "sudo dmesg | grep tty" there are no new device connections are logged while the connected booster reboots => I can not connect to it to monitor something.
I don't know off hand whether the mass-erase dfu command is correct like that.
Other than ensuring it is, the next step would be to connect a SWD debugger and have a look at the panic messages there.
Elsewhere it looks like people do this: https://github.com/dhylands/upy-examples/blob/master/mass-erase.sh maybe that's a useful reference.
Finally, resolved the issue by modifying the 0.6.0 firmware making it to ignore the current eeprom mainboard settings, using the default ones, and storing them to the device. But without any debug info it was tough)
Ilyich2011
Hi, I think I have the same problem with our Sinara Booster.
Reboot loop after I tried to change the IP address.
All the same symptoms.
I rewrote the firmware, but it did not help.
Can you tell me how you you modified the firmware so it does not load the wrong IP settings?
Have you tried the mass-erase with dfu-util?
Otherwise, for modifying the source code, look here: https://github.com/quartiq/booster/blob/main/src/settings/eeprom/main_board.rs#L216 - change it to pull settings from the default, and skip trying to deserialize settings from EEPROM.
- Edited
Ilyich2011
I still have the problem, unfortunately. How did you change the firmware?
I have not been able to modify it to boot again.
- Edited
What you need is to clone a 0.6.0 firmware version for booster from https://github.com/quartiq/booster/tree/main , go to file src/settings/eeprom/main_board.rs and replace method "pub fn load(eeprom: &mut Eeprom)" in "impl BoosterMainBoardData" (line 209) with the following:
pub fn load(eeprom: &mut Eeprom) -> Self {
let mut mac: [u8; 6] = [0; 6];
eeprom.read_eui48(&mut mac).unwrap();
let mut sinara_config: [u8; 256] = [0; 256];
eeprom.read(0, &mut sinara_config).unwrap();
//SinaraConfiguration::try_deserialize(sinara_config)
// .and_then(|config| Self::deserialize(&mac, &config.board_data).map(|result| result.0))
// .unwrap_or_else(|_| Self::default(&mac))
Self::default(&mac)
}
What it basically does is loading config from eeprom (mac address and other config) and instead of trying to deserialize it (commented section) immediately return a default version, basically ignoring what it has just read.
Ilyich2011
Thank you very much, that solved my problem!