Check Firmware version?

Is there really no way to get the BrickPi to report what version of the firmware it has? That is hard to believe. It also creates a problem for noobs like my son and me who have only EV3 sensors. If the empirical test of the sensors fails, we don’t know if it is because we did something wrong, or because we need to update the firmware.

Given that updating the firmware is a complex process, requiring a lot of time and special hardware, and presumably carrying with it some risk to the BrickPi, it would seem like a more elegant solution would be in order.

Even if the solution was to put a sharpie dot on the updated cards before they were shipped, it would save a lot of heartache on the user’s end.

Hey Bret,

Just to clear this up: the firmware is what ships on the BrickPi Boards.

The issues you point out are totally valid. When we first started developing the BrickPi, we didn’t see much of a point to this, and we (like everyone here) are learning.

The latest version of the BrickPi does have a way to detect the firmware version. In the BrickPi_Python/Sensors directory, there is a file called “EV3-Firmware_Check.py” if you change to that directory and run
sudo python EV3-Firmware_Check.py

There’s a better explanation inside the python file. You will of course need to have the basics setup (power on the BrickPi).

When did you purchase the BrickPi board?

Great! Thanks. I’m really happy to hear this.

I believe you shipped me the order on Nov. 18th.

Bad news. We successfully ran the firmware check. Our firmware reports out as: 644.

We apparently need to update.

That would not be such a big deal, accept that reading through the directions, there are many places where the noob-brain sees ambiguity about what exactly is supposed to be done. In other words, there is a substantial dose of “What is that supposed to mean?”

Any chance the directions could be tightened up? We would be happy to help in that process.

Hey Bret,
Just to double check: did you use the touch sensor? There were requirements for that. If so, which touch sensor?

We used the EV3 touch sensor.

“644” doesn’t sound like a Firmware version. Did I do something wrong, or can it be deciphered?

What is the thought here? Does ‘644’ make sense? What firmware version is that?

Bump

So. What does 644 imply?

And what about the possibility of a firmware updating script + Arduino sketch? I understand I would still need the programming cable.

I can and will figure out the update with the method already described, if necessary, but this is all rather arcane for a product designed to make the integration of Lego parts with Raspberry Pi straightforward. And it can’t be helping Dexter Industries to have prospective customers confronted with the strong possibility that their freshly ordered BrickPi won’t fully work with current Mindstorms kits.

So. What does 644 imply?
This is strange. If you look at the code:

https://github.com/DexterInd/BrickPi_Python/blob/master/Sensor_Examples/EV3-Firmware_Check.py

We’re only expecting a -1 result, a 0, or a 2. 644 Sounds like a failure.

And what about the possibility of a firmware updating script + Arduino sketch? I understand I would still need the programming cable.

You can update the firmware with an Arduino and a programming cable. Or an ISP programmer from Atmel and a programming cable.

We’ve been trying to work on a Google Doc for the past few months to outline this, but we haven’t had many people try or want to test it out for us (understandably, it’s not a simple fix), so it’s remained in beta.

The link to the document for using an AVR programmer is here:

The link to the document for using an Arduino is here:

The link to the programmer cable you’ll need is here:
http://www.dexterindustries.com/site/?product=isp-firmware-programmer

If you try to use this, we’d really like to hear about your experience with the document and outline, we’d like to make it better if we can.

I can and will figure out the update with the method already described, if necessary, but this is all rather arcane for a product designed to make the integration of Lego parts with Raspberry Pi straightforward. And it can’t be helping Dexter Industries to have prospective customers confronted with the strong possibility that their freshly ordered BrickPi won’t fully work with current Mindstorms kits.

Thanks for the feedback. We strive to make it as easy as possible, we’re sorry we’re falling short here. No product or designer is perfect; the best we can do is try to improve.

One quick followup: if you could post the complete output from running the script, that might be helpful. We’re still confused by where the “644” came from.

Also, just to double check: you ran the script using sudo, correct? Maybe this could be a permissions issue?

I no longer remember the details. I am happy to re-run the test as soon as time allows.

Sorry about my frustration. The difficulty of the update makes communication from D.I. much more important. If the update were simple and free and without risk, I would run it just in case. But given the nature of the process, I don’t want to go down this road unless I absolutely have to. Given that, I needed to know that “644” was a head-scratcher on your end.

Be aware, the Google Doc is hard to follow for a noob. I’d be glad to help improve it, but I suspect there is a way to deliver a script that would allow a much simpler update process.

I’m getting the following when running the EV3-Firmware-Check.py

pi@raspberrypi ~/BrickPi_Python/Sensor_Examples $ sudo python EV3-Firmware_Check.py 
Trying to communicate with firmware.
PASS: Successfully connected to BrickPi.
PASS: Hardware seems to be running normally.
 
Checking Firmware Version of BrickPi.
Firmware version is: None
DOH!  Please update your firmware to run EV3 sensors!
You should be able to run NXT sensors, but not EV3 sensors.

mgzcarlos, this seems to indicate that you don’t have the latest firmware on your BrickPi.

One question: do you have any sensors attached to it?

I just bought BrickPI starter kit. It came with BrickPI 2015.11.09 version (in MicroSD). I can boot into bulletproof mode (with monitor, keyboard/mouse, and network cable). I just wanted to make sure I got the latest BrickPI firmware updated. So I ran the following command without any EV3 sensors/motors attached. I only plan to use EV3 motors & sensors (parts are on the way).

pi@raspberrypi ~/BrickPi_Python/Sensor_Examples $ sudo python EV3-Firmware_Check.py
Trying to communicate with firmware.
PASS: Serial line setup.

Setup Sensors returned: -1
Checking Firmware Version of BrickPi.
Firmware version is: None
DOH! Please update your firmware to run EV3 sensors!
You should be able to run NXT sensors, but not EV3 sensors.

Questions:

  1. If I plug in EV3 sensor will the above message go away?
  2. Under Firmware_BrickPI folder I see Firmware_1.7.4 folder and also see Firmware_2.0 folder. I just want to know which version is being used. I just want to know if I am ready for EV3 motors and sensors.
  3. How do I know if I need a BrickPI Firmware update or not?

Hey mparamas,

  1. The BrickPi comes with the firmware already loaded. Those folders are just for developers that want to develop new firmware. It sounds like yours should have come with 2.0 loaded.

  2. You need to connect an EV3 sensor to Port 4 for this to return a correct value.

  3. If you run that test again with an EV3 touch sensor in place, you should see a postive result. If you don’t, something is either wrong with the board or the firmware is out of date (but I doubt it if you’ve bought it in the last few months).

John

Thanks John. Yes, I got BrickPI starter kit this month (December 2015).

Lego EV3 motor (http://shop.lego.com/en-US/EV3-Large-Servo-Motor-45502) is capable of Tacho feedback. I would like to read motor speed and send motor speed to this motor. I am hoping the firmware will let me do this. Do you have code to read/send motor speed from/to this motor? Thanks.

Sure, the code for running motors, we have a few that work:
https://github.com/DexterInd/BrickPi_Python/blob/master/Sensor_Examples/LEGO-Encoder_Example.py
https://github.com/DexterInd/BrickPi_Python/blob/master/Sensor_Examples/LEGO-Encoder_Test.py
https://github.com/DexterInd/BrickPi_Python/blob/master/Sensor_Examples/LEGO-Motor_Test.py
https://github.com/DexterInd/BrickPi_Python/blob/master/Sensor_Examples/LEGO-Motor_Test_Timeout.py
https://github.com/DexterInd/BrickPi_Python/blob/master/Sensor_Examples/LEGO-Multi_Motor_Encoder_Test.py

All of these are included in Raspbian for Robots, which if you’re not using, we highly recommend you use!

Awesome. Thanks John.

>>All of these are included in Raspbian for Robots, which if you’re not using,…
Purchase of BrickPI starter kit comes with Raspbian for Robots 2015.11.09 in SD w/MicroSD.
Photo attached. FYI.

Good to see you’re using it! All those software examples should be on the SD card already,no need to download.