Github code bricked CBC

1 reply [Last post]
Jeremy Rand
Jeremy Rand's picture
Title: Botball Youth Advisory Council
Joined: 04/03/2009
Posts:
BotPoints: 1168
User offline. Last seen 7 years 18 weeks ago.

I was working with the Github code, and tried to build cbcui. It built, but after I SCP'ed it to the CBC and restarted cbcui, it gave a missing shared library message via SSH and never booted. I don't have the library name on hand at the moment (I'll post that later this week), but it looks like cbcui is trying to link to version 0.0 of that lib, while the version on the CBC is 1.0 (if I remember correctly). I made a symlink from 0.0 to 1.0 on the KISS partition and restarted cbcui again, and it was fine.

I assumed that this was because the library was messed with, and that by only updating cbcui in flash and not updating the libs in the KISS partition, I had caused this. Unfortunately, I then found out that the same bug had completely bricked David Miller's CBC when he simply flashed a cbc_interface (since he wasn't logged into SSH to repair it).

So, 2 points here. First, is there a reason why cbcui is linking with the wrong library version? Was any of this intentionally changed since 3.0.3 came out? Second, why is it that the ability to flash a firmware is dependent on cbcui booting? If copying over a cbcui that doesn't boot is enough to brick the CBC, that's not a good design choice, and it will discourage hackers from contributing code. With the previous firmwares, the firmware update process was handled by the boot script, which was very hard to brick unless the hacker did something exceedingly stupid. Why is this no longer the case? David didn't seem to be aware that the boot scripts no longer handle firmware updates.

I'm trying to meet a deadline on Drone libs, so an answer would be greatly appreciated... I don't want any firmwares that I release to brick any additional CBC's.

Thanks.

-Jeremy Rand
Senior Programmer, Team SNARC (2012-2013), Norman Advanced (2010-2011), Norman HS (2008-2009), Norman North (2005-2007), Whittier MS (2003-2004)
2012-2013 VP of Tech, 2011 President, Botball YAC (2009-2013)
Mentor, Alcott and Whittier MS

Beta
Beta's picture
Title: The Magnificent
Joined: 02/24/2012
Posts:
BotPoints: 266
User offline. Last seen 8 years 32 weeks ago.

I would imagine it is the Qt libraries, or its dependencies. I think we use Qt 4.7.3? I couldn't check without calling the office and having someone log in to our linux box. If your deadline can absolutely not wait, I would recommend simply copying your libs over with cbcui. The entire filesystem was changed around with the introduction of 3.x, but not specifically with 3.0.3. The boot scripts actually do call the update scripts, just as with the userhook0 line of updates. I was digging through the code with David the other day. A faulty cbcui will brick a CBC regardless of version, since the script just attempts to launch cbcui and calls it "good." If you post the library name I might be able to give you more details.

Braden McDorman

Developer of the KIPR Link, KISS IDE, KIPR's 2D Simulator, and CBCJVM.

Reach me at bmcdorman(cat)kipr(dog)org where (cat)=@ and (dog)=. if you need assistance of any kind.