6 Replies Latest reply on Feb 5, 2016 4:39 PM by CMata_Intel

    FTDI + mraa + radiolink comms

    juanB

      Hi all.

      First of all I want to say that I've been reading a lot of messages related with my problem in this forum and others and trying all I saw in them, but it didn't work so I'm desperate so I'm trying to ask directly.

      I'll try to explain the exact point where I am at this moment with the problem.

       

      I'm trying to configure my intel edison in order to establish communications between two radiolink antennas via ftdi serial.

      I have a code in c++ that is working perfectly in the same way but in a raspberry pi so I migrated it to the mraa library to be able to use it in the intel edison.

       

      I establish comms correctly (I installed correctly FTDI drivers and mount the radiolink to ttyUSB0) but it seems that the messages don't arrive well. For example i send from edison the message: "REAL:2:4.44444:5.55555" it seems that the first message arrives ok, but then next messages arrive cut (for example: "EAL:4.4*********" where * are squares), and finally it seems to receive the same message that is send to the intel edison from the other pc.

       

      Well, after a lot of debugging an tracing i have no idea of what is the reason of this behavior (remember same code works for rasPI, the only change is that in edison i'm usin lib mraa).

      I had mraa v. 0.7XXX so I thought that it could be something related with the mraa lib, so I tried to update it but I can't, so I did this:

      1. Flashed the intel edison to the last image from the official web (edison-iotdk-image-280915) with the flash tool --> OK

      2. Tried to update mraa (IoT - Updating the MRAA I/O and UPM sensor libraries | Intel® Developer Zone) --> didn't work, finally I had to do "opkg install mraa" instead "opkg install libmraa0"

      3. Install FTDI drivers with "opkg install kernel-module-ftdi-sio", fist attempt didn't work because apparently I hadn't enough space on my edison, so I removed the kernel-module-ftdi-sio, restarted the edison and tried it again --> apparently it worked OK

       

      Now I'm trying to mount the radiolink, but the edison doesn't mount ttyUSB0 so I think I missed something.

       

      Some clues:

       

      dmesg | grep FTDI:

      [  211.995177] usb 1-1: Manufacturer: FTDI

      [ 2586.998826] usb 1-1: Manufacturer: FTDI

       

      lsusb:

      Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

      Bus 001 Device 002: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)

      Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

       

      In /dev I think i'ts mounting it as: usbmon1 and usbmon2

       

      First of all, I need to be able to mount the ttyUSB0 and then I need to fix the communications (if it is not the mraa library).

      Thank you very much!

        • 1. Re: FTDI + mraa + radiolink comms
          CMata_Intel

          Hi juanB,

           

          Are you setting the ttyUSB0 in your code with: dev = new mraa::Uart("/dev/ttyUSB0") or how are you setting it?

          If you have the latest image correctly flashed you should have 0.8.0 MRAA version.

          Run configure_edison --version, you should get as result 159.devkit

          Check the MRAA version with: opkg list-installed mraa

          Yes, in order to update it to the latest one (0.9.0) you have to run opkg install mraa

           

          How did you mount the ttyUSB0 before, when you were receiving wrong data in the UART?

          In order to see the ttyUSB0 device I suggest you to follow the instructions in How to install a kernel from my repo onto Edison with the official image; there are other makers that have been able to use this device after following that guide:

          Re: Serial over USB Type-A on Edison Kit for Arduino: cannot find /dev/ttyUSBx or ttyACMx

          Re: Reading USB-Serial GPS from OTG Port

           

          About the error while writing in the UART

          Have you tried to check the signal with an oscilloscope or logic analyzer in order to see if there noise or another problem?

          Are you using the Arduino Expansion Board or the Breakout Board?

          Are you setting all the parameters correctly with the setMode and setFlowcontrol functions? I suggest you to check those functions. [MRAA - UART.h File Reference]

          Are you disabling the timeout or changing it in order to see changes in the data?

          Is this happening with all the data you try to read/write or is it happening only with strings?

           

          Regards,

          Charlie

          • 2. Re: FTDI + mraa + radiolink comms
            juanB

            Hi CMata, thanks for your answer.

             

            - I set the ttyUSB0 the way you wrote (dev = new mraa::Uart("/dev/ttyUSB0") ) and I was able to establish connection between the two radiolink antennas, but the messages apparently didn't arrive well (now the edison does not mount the ttyUSB0 archive although I installed the FTDI drivers). This time I followed the instructions in this page, the same I did previously and it worked: Using USB-serial FTDI adapters with Intel Edison | SciVision

            - I checked the version of the image --> 159.devkit so it's OK

            - Also checked the mraa version --> you are right, it's 0.8.0, the 0.7.xxxx is the version of libmraa0

             

            I'm going to read the links you copied.

             

            About UART:

            - I did'nt try an oscilloscope, if there is noise it must be at the tx of the edison, all the other hardware is correctly checked with other pc's and raspberry (radiolink antennas included).

            - I'm using the mini breakout board

            - the setmode and setflowcontrol are set the same way in both sides, so I think it's correct (8-n-1 in this case) and the baud rate it's correctly configured too.

            - I'm not changing the timeout, how can i do that? Can you give me some example in order to se changes? The program transmits a lot of data every second. However, I tried to do a usleep y the Tx side to see if the rx side was overloaded, apparently it wasn't the problem.

            - I send an array of 256 bytes (ascii 0-255, raw char data), then I transform it to a string in order to see it in the console.

             

             

            Again, thank you for your help.

            • 3. Re: FTDI + mraa + radiolink comms
              CMata_Intel

              Hi juanB

               

              Thanks for the information, I’m glad to know that you are able to see the ttyUSB0 now.

              The latest MRAA version is the 0.9.0 you can try with that one too: http://iotdk.intel.com/repos/2.0/intelgalactic/

              In order to work with the timeout, take a look at: mraa: /var/lib/jenkins/workspace/mraa-doc/api/mraa/uart.h File Reference

              mraa_result_t mraa_uart_set_timeout ( mraa_uart_context dev, int read, int write, int interchar)

               

              Set the timeout for read and write operations <= 0 will disable that timeout

               

              Parameters

              dev The UART context

              read read timeout

              write write timeout

              interchar inbetween char timeout

               

              Also, are you doing loop tests by connecting the Tx to the Rx of the Board?

               

              Regards,

              Charlie

              • 4. Re: FTDI + mraa + radiolink comms
                juanB

                Hi Again.

                Maybe I didn't explain it correctly, I was able to mount ttyUSB0 and link it to my code before I did the new flashing of the intel edison.

                At this moment edison didn't mount the ttyUSB0 file.

                • 5. Re: FTDI + mraa + radiolink comms
                  CMata_Intel

                  Hi juanB,

                   

                  How are you currently trying to mount the ttyUSB0? Are you using the guide on How to install a kernel from my repo onto Edison with the official image ?

                   

                  Regards,

                  Charlie

                  • 6. Re: FTDI + mraa + radiolink comms
                    CMata_Intel

                    Hi juanB,

                     

                    Have you been able to mount the ttyUSB0?

                    Let me know if you still have problems with this.

                     

                    Regards,

                    Charlie