9 Replies Latest reply on May 2, 2014 2:41 AM by Blackcode

    Known issues

    Clayton Hofrock

      I would like to start a one stop thread for all the known issues. Please list out the known issue, and provide a link to the discussion.


      • Using a LCD in parallel mode does not work due to a known bug.
        • 1. Re: Known issues
          Clayton Hofrock

          More Known issues:

          1 of 1 people found this helpful
          • 2. Re: Known issues
            Clayton Hofrock

            More Known Issues:

            • String addition does not work in the 1.5.3 IDE:
              • error: no match for 'operator+'
            • random() function does not take parameters, there is a partial work around listed here:
            • tone() function does not exist
              • found when running the example Digital -> toneMelody
            • SD library does not support include Sd2Card, Sd2Volume, SdFile
            • IRRemote library will not compile
              • C:\arduino-1.5.3\libraries\RobotIRremote\IRremote.cpp:23:27: fatal error: avr/interrupt.h: No such file or directory
            1 of 1 people found this helpful
            • 3. Re: Known issues

              Anything that requires any of the avr/*.h headers will probably not work. That will be specific to AVR microcontroller hardware. These aren't really problems with Galileo/Quark per se, instead are just hardware-dependent features for which we don't have our own header files. I think it should be addressed, however.


              pulseIn() doesn't work because it requires avr/io.h. This means you can't use ultrasonic distance sensors on Galileo

              DDRB, PortB, etc. for direct bit manipulation doesn't work, so you can't save a bunch of pins by bit shifting (at least not this method). Several code examples on Arduino.cc won't work.

              • 4. Re: Known issues

                After the firmware upgrade the reboot button on the board may not work properly


                Reboot button after firmware upgrade


                As far as I understand this is going to be fixed in the next FW release, as it's claimed to be fixed by the 0.8.0 BSP (I'm working on trying this out).

                • 5. Re: Known issues
                  Clayton Hofrock

                  I have tried the 0.8.0 BSP firmware and the reset is not fixed. (Note: I was using the 0.8.0 booting from and SD card, which might be different than using the BSP from the SPI)


                  It seem to me that the firmware is really what needs the fix, and booting from an SD card would not modify the firmware, which probably lives on the SPI device.


                  I guess now I should work on getting the 0.8.0 BSP to build an SPI image.

                  • 6. Re: Known issues

                    Getting Started Guide (latest version) says "SD card size must be less than 32GB". That is not correct.

                    Should say "SD card size must not be greater than 32GB".

                    • 7. Re: Known issues

                      That's exactly the case, chofrock, you need to update the SPI part, which will also update the UEFI level of it.


                      I've also tried just the SD image first, but it was fixed only after I've updated the SPI part.


                      As far as building the image is concerned - it's not much more complicated than SD image, which you already did. Just build a "image-tiny" target and use my script to generate bin or cap file. Feel free to ask if you have any ambiguities or problems doing that. The script is at http://github.com/alext-mkrs/galileo-fw

                      • 8. Re: Known issues

                        I meant image-spi target if course, image-tiny doesn't exist

                        • 9. Re: Known issues

                          This work on my YUN without the need of pulseIn. I do not know why it does not work on galileo maybe you can take a look.


                          #define trigPin 10
                          #define echoPin 12

                          void setup() {

                          Serial.begin (9600);

                          pinMode(trigPin, OUTPUT);
                          pinMode(echoPin, INPUT);

                          void loop() {
                          long duration, distance;
                          digitalWrite(trigPin, LOW); // Added this line
                          delayMicroseconds(2); // Added this line

                          digitalWrite(trigPin, HIGH);
                          // delayMicroseconds(1000); - Removed this line
                          delayMicroseconds(10); // Added this line
                          digitalWrite(trigPin, LOW);

                          duration = pulseIn2(echoPin, HIGH);
                          distance = (duration/2) / 29.1;
                          if (distance >= 200 || distance <= 0){
                          Serial.println("Out of range");
                          else {

                          Serial.println(" cm");


                          unsigned long pulseIn2(uint8_t pin, uint8_t state) {

                              unsigned long pulseWidth = 0;
                              unsigned long loopCount = 0;
                              unsigned long loopMax = 5000000;

                              // While the pin is *not* in the target state we make sure the timeout hasn't been reached.
                              while ((digitalRead(pin)) != state) {
                                  if (loopCount++ == loopMax) {
                                      return 0;

                              // When the pin *is* in the target state we bump the counter while still keeping track of the timeout.
                              while ((digitalRead(pin)) == state) {
                                  if (loopCount++ == loopMax) {
                                      return 0;

                              // Return the pulse time in microsecond!
                              return pulseWidth * 4.72; // Calculated the pulseWidth