ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    voxl_spi_init, failed to open /dev/spidev device: No such file or directory.

    FAQs
    4
    30
    1965
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Alex KushleyevA
      Alex Kushleyev ModalAI Team @이광철
      last edited by

      @이광철 , you need to disable uart:

      /* M0104 - J10 JST connector */
      &qupv3_se14_2uart {
      status = "disabled";
      };
      
      이광철이 1 Reply Last reply Reply Quote 0
      • 이광철이
        이광철 @Alex Kushleyev
        last edited by

        @Alex-Kushleyev

        First of all thank you for your advice.
        build_mount/lu.um.1.2.1/apps_proc/poky/meta-voxl2-bsp/recipes-kernel/linux-msm/files/dts/m0104/m0104-modalai-qupv3.dtsi

        /* M0104 - J10 - GPIO 40-44 */
        &qupv3_se14_spi {
        status = "ok";
        };

        /* M0104 - J10 JST connector */
        &qupv3_se14_2uart {
        status = "disabled";
        };

        Modified as above.

        After building the kernel, the contents of /dev are as follows.
        Why doesn't spidev14.0 exist?
        What am I doing wrong?

        voxl2-mini:/dev$ ls spidev*
        spidev0.0 spidev3.0

        voxl2-mini:/dev$ ls tty*
        tty tty10 tty13 tty16 tty19 tty21 tty24 tty27 tty3 tty32 tty35 tty38 tty40 tty43 tty46 tty49 tty51 tty54 tty57 tty6 tty62 tty8 ttyprintk
        tty0 tty11 tty14 tty17 tty2 tty22 tty25 tty28 tty30 tty33 tty36 tty39 tty41 tty44 tty47 tty5 tty52 tty55 tty58 tty60 tty63 tty9
        tty1 tty12 tty15 tty18 tty20 tty23 tty26 tty29 tty31 tty34 tty37 tty4 tty42 tty45 tty48 tty50 tty53 tty56 tty59 tty61 tty7 ttyMSM0

        Alex KushleyevA 1 Reply Last reply Reply Quote 0
        • Alex KushleyevA
          Alex Kushleyev ModalAI Team @이광철
          last edited by

          @이광철 , just to double check.. after building the kernel, did you install it to voxl2 mini?

          If all else fails, you can test (without overwriting) the kernel from SDK 1.1.1 like this :

          voxl2-mini_SDK_1.1.1/system-image$ adb reboot bootloader
          voxl2-mini_SDK_1.1.1/system-image$ fastboot boot qti-ubuntu-robotics-image-m0104-boot.img
          Sending 'boot.img' (17552 KB)                      OKAY [  0.509s]
          Booting                                            OKAY [  0.033s]
          Finished. Total time: 0.553s
          

          then adb into the device and check spi port in /dev/

          이광철이 2 Replies Last reply Reply Quote 0
          • 이광철이
            이광철 @Alex Kushleyev
            last edited by

            @Alex-Kushleyev

            just to double check.. after building the kernel, did you install it to voxl2 mini?
            Yes
            I built the kernel and installed it on voxl2-mini.
            The process is as follows.
            C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>adb reboot bootloader
            C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>fastboot flash boot_a qti-ubuntu-robotics-image-m0104-boot.img
            Sending 'boot_a' (20088 KB) OKAY [ 0.458s]
            Writing 'boot_a' OKAY [ 0.026s]
            Finished. Total time: 0.637s
            C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>fastboot flash boot_b qti-ubuntu-robotics-image-m0104-boot.img
            Sending 'boot_b' (20088 KB) OKAY [ 0.463s]
            Writing 'boot_b' OKAY [ 0.032s]
            Finished. Total time: 0.654s
            C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>fastboot reboot
            Rebooting OKAY [ 0.001s]
            Finished. Total time: 0.006s
            C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>adb wait-for-device
            C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>adb shell
            ▂▂▂▂▂▂▂▂▂▂▂▂▂
            ▂▄▆▆██▛▀▀▀▀▀▀▀▀▜████▆▆▄▂
            ███╗ ███╗ ██████╗ ██████╗ █████╗ ██╗ ▗▆████▀▔ ▔▔▀▀▀▀▚▄
            ████╗ ████║██╔═══██╗██╔══██╗██╔══██╗██║ ▗▟████▀ ▗██▖ ▐█ ▝▀▆▄▄▄
            ██╔████╔██║██║ ██║██║ ██║███████║██║ ▟████▀ ▗█▘▝█▖ ▐█ ▜█▀█▄
            ██║╚██╔╝██║██║ ██║██║ ██║██╔══██║██║ █▌ ▐█▌ ▗█▘ ▝█▖ ▐█ ▐▄ ▄█
            ██║ ╚═╝ ██║╚██████╔╝██████╔╝██║ ██║███████╗ ▀████ ▗█▘ ▝█▖ ▐█ ▂▄███▀
            ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ▀▀██▄▄ ▂▆███▀
            ▀▀██▄▄ ▀▀▆▄▄▄▄▆██▀▀▀▘


            system-image: 1.7.1-M0104-14.1a-perf-nightly-20231025
            kernel: #1 SMP PREEMPT Wed Mar 27 02:44:30 UTC 2024 4.19.125

            hw version: M0104

            voxl-suite: 1.1.2

            no current network connection

            1 Reply Last reply Reply Quote 0
            • 이광철이
              이광철 @Alex Kushleyev
              last edited by

              @Alex-Kushleyev

              I downloaded voxl2-mini_SDK_1.1.1.tar.gz from https://developer.modalai.com/asset/eula-download/141

              It was tested as follows.
              C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>adb reboot bootloader
              C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>fastboot boot qti-ubuntu-robotics-image-m0104-boot.img
              Sending 'boot.img' (17548 KB) OKAY [ 0.382s]
              Booting OKAY [ 0.034s]
              Finished. Total time: 0.471s
              C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>adb shell

                                                                   ▂▂▂▂▂▂▂▂▂▂▂▂▂
                                                              ▂▄▆▆██▛▀▀▀▀▀▀▀▀▜████▆▆▄▂
              

              ███╗ ███╗ ██████╗ ██████╗ █████╗ ██╗ ▗▆████▀▔ ▔▔▀▀▀▀▚▄
              ████╗ ████║██╔═══██╗██╔══██╗██╔══██╗██║ ▗▟████▀ ▗██▖ ▐█ ▝▀▆▄▄▄
              ██╔████╔██║██║ ██║██║ ██║███████║██║ ▟████▀ ▗█▘▝█▖ ▐█ ▜█▀█▄
              ██║╚██╔╝██║██║ ██║██║ ██║██╔══██║██║ █▌ ▐█▌ ▗█▘ ▝█▖ ▐█ ▐▄ ▄█
              ██║ ╚═╝ ██║╚██████╔╝██████╔╝██║ ██║███████╗ ▀████ ▗█▘ ▝█▖ ▐█ ▂▄███▀
              ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ▀▀██▄▄ ▂▆███▀
              ▀▀██▄▄ ▀▀▆▄▄▄▄▆██▀▀▀▘


              system-image: 1.7.1-M0104-14.1a-perf-nightly-20231025
              kernel: #1 SMP PREEMPT Thu Oct 26 04:23:26 UTC 2023 4.19.125

              hw version: M0104

              voxl-suite: 1.1.2

              no current network connection

              spidev14.0 still does not exist.
              There is something strange.
              Why voxl-suite: 1.1.2?
              voxl-suite: 1.1.1 Isn't that correct?

              Alex KushleyevA 1 Reply Last reply Reply Quote 0
              • Alex KushleyevA
                Alex Kushleyev ModalAI Team @이광철
                last edited by

                @이광철 , if you update just the kernel (or boot using a temporary one), the rest of the file system is unaffected, so voxl suite will remain the same. You can look at the kernel build dates to see the difference (it is also printed when you start adb shell).

                I am not sure why spi is not showing up, will need to ask @admin

                Alex KushleyevA 1 Reply Last reply Reply Quote 0
                • Alex KushleyevA
                  Alex Kushleyev ModalAI Team @Alex Kushleyev
                  last edited by

                  Maybe the change spi ->uart was actually made before sdk 1.1.1. We will need to double check that.

                  Alex KushleyevA 1 Reply Last reply Reply Quote 0
                  • Alex KushleyevA
                    Alex Kushleyev ModalAI Team @Alex Kushleyev
                    last edited by Alex Kushleyev

                    I confirmed that kernel from SDK 1.1.1 does not have the spi mapped. So i tried the kernel from SDK 1.0.0 and it does. In this case my board has SDK 1.1.1 installed, but i am booting into kernel from SDK 1.0.0.

                    voxl2/builds/voxl2-mini_SDK_1.0.0/system-image$ adb reboot bootloader
                    voxl2/builds/voxl2-mini_SDK_1.0.0/system-image$ fastboot boot qti-ubuntu-robotics-image-m0104-boot.img
                    Sending 'boot.img' (17552 KB)                      OKAY [  0.508s]
                    Booting                                            OKAY [  0.034s]
                    Finished. Total time: 0.573s
                    
                    ...
                    adb shell
                    
                    system-image: 1.7.1-M0104-14.1a-perf-nightly-20231025
                    kernel:       #1 SMP PREEMPT Fri May 19 22:53:15 UTC 2023 4.19.125
                    --------------------------------------------------------------------------------
                    hw version:   M0104
                    --------------------------------------------------------------------------------
                    voxl-suite:   1.1.1
                    --------------------------------------------------------------------------------
                    no current network connection
                    --------------------------------------------------------------------------------
                    
                    
                    voxl2-mini:/$ ls /dev/spidev*
                    /dev/spidev0.0  /dev/spidev11.0  /dev/spidev14.0  /dev/spidev3.0
                    

                    Now, i am not sure why your manual kernel build did not work. if you still cannot get it to work, let us know, we can build it with spi enabled and test it for you.

                    이광철이 1 Reply Last reply Reply Quote 0
                    • 이광철이
                      이광철 @Alex Kushleyev
                      last edited by

                      @Alex-Kushleyev

                      I downloaded voxl2-mini_SDK_1.0.0.tar.gz from https://developer.modalai.com/asset/eula-download/127

                      It was tested as follows.

                      C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>adb reboot bootloader
                      C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>fastboot flash boot_a qti-ubuntu-robotics-image-m0104-boot.img
                      Sending 'boot_a' (17552 KB) OKAY [ 0.399s]
                      Writing 'boot_a' OKAY [ 0.023s]
                      Finished. Total time: 0.565s
                      C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>fastboot flash boot_b qti-ubuntu-robotics-image-m0104-boot.img
                      Sending 'boot_b' (17552 KB) OKAY [ 0.397s]
                      Writing 'boot_b' OKAY [ 0.019s]
                      Finished. Total time: 0.561s
                      C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>fastboot reboot
                      Rebooting OKAY [ 0.000s]
                      Finished. Total time: 0.005s
                      C:\Users\User\Desktop\OpenSDP\platform-tools_r33.0.3-windows\platform-tools>adb shell

                      system-image: 1.7.1-M0104-14.1a-perf-nightly-20231025
                      kernel: #1 SMP PREEMPT Fri May 19 22:53:15 UTC 2023 4.19.125

                      hw version: M0104

                      voxl-suite: 1.1.2

                      no current network connection

                      voxl2-mini:/dev$ ls spi*
                      spidev0.0 spidev11.0 spidev14.0 spidev3.0

                      OK!
                      The spidev14.0 file exists.

                      I tested it as below:
                      voxl2-mini:/dev$ qrb5165io-spi-test -d 0
                      failed to ping icm42688p IMU

                      voxl2-mini:/dev$ qrb5165io-spi-test -d 11
                      failed to ping icm42688p IMU

                      voxl2-mini:/dev$ qrb5165io-spi-test -d 3
                      [INFO] success! ICM42688 Detected

                      voxl2-mini:/dev$ qrb5165io-spi-test -d 14

                      There is no response to the qrb5165io-spi-test -d 14 command.
                      is this right?
                      Is spidev14.0 not working?

                      Alex KushleyevA 1 Reply Last reply Reply Quote 0
                      • Alex KushleyevA
                        Alex Kushleyev ModalAI Team @이광철
                        last edited by

                        @이광철 , do you have anything connected to spidev14.0 ? You need a device connected to the spi port.

                        If you look at the source code for this test app, it simply tries to ping a specific IMU device, which happens to be installed on board on SPI3 (ICM42688 IMU) : https://gitlab.com/voxl-public/voxl-sdk/core-libs/libqrb5165-io/-/blob/master/apps/examples/qrb5165io-spi-test.c

                        So, you should connect your desired device to J10 and modify the example to communicate with your device.

                        Also, based on this documentation, https://docs.modalai.com/voxl2-mini-connectors/#j10-pin-out-spi-mode-gpio_67--low-kernel-rebuild-required-to-use, you need to set the GPIO before using:

                        voxl-gpio -w 67 1
                        

                        I hope that helps

                        Alex KushleyevA 이광철이 2 Replies Last reply Reply Quote 0
                        • Alex KushleyevA
                          Alex Kushleyev ModalAI Team @Alex Kushleyev
                          last edited by

                          Another quick tip for testing SPI stuff. I found this useful:

                          https://github.com/rm-hull/spidev-test/blob/master/spidev_test.c

                          You can download this file to VOXL2, build it using

                          gcc -O2 spidev_test.c -o spidev_test
                          

                          and then you can actually query the IMU on spi 3:

                          voxl2-mini:~$ ./spidev_test -D /dev/spidev3.0 -p "\x76\x00\xF5\x00"
                          spi mode: 0x0
                          bits per word: 8
                          max speed: 500000 Hz (500 KHz)
                          RX | 00 00 00 47 ...
                          

                          and from here we know that 0x47 is actually the value WHOAMI register of ICM42688 IMU 🙂

                          The data i am sending to the device is 4 bytes used to query the imu, as done here . the value 0xF5 = 0x75 | 0x80 which tells the IMU to send back the value of register 0x75

                          이광철이 2 Replies Last reply Reply Quote 0
                          • 이광철이
                            이광철 @Alex Kushleyev
                            last edited by

                            @Alex-Kushleyev

                            I will connect my spi device and let you know the results after testing.
                            Thanks for your help.

                            1 Reply Last reply Reply Quote 0
                            • 이광철이
                              이광철 @Alex Kushleyev
                              last edited by

                              @Alex-Kushleyev

                              Hi.

                              I tested it by connecting my spi device to j10.
                              This spi device is working normally in voxl2.
                              My program for testing also operates normally with this spi device in voxl2.
                              However, when I test the spi device and test program on voxl mini, there is no response to the voxl_spi_write function.

                              Also, the test below is the same as before.
                              voxl2-mini:/dev$ qrb5165io-spi-test -d 14
                              There is no response to the qrb5165io-spi-test -d 14 command.

                              I need your help and thanks in advance.

                              1 Reply Last reply Reply Quote 0
                              • 이광철이
                                이광철 @Alex Kushleyev
                                last edited by

                                @Alex-Kushleyev

                                I tested according to your advice.
                                This is the result of testing on my mini.

                                voxl2-mini:~$ cd /usr/bin
                                voxl2-mini:/usr/bin$ spidev_test -D /dev/spidev3.0 -p "\x76\x00\xF5\x00"
                                spi mode: 0x0
                                bits per word: 8
                                max speed: 500000 Hz (500 KHz)
                                can't send spi message: Invalid argument
                                Aborted

                                이광철이 1 Reply Last reply Reply Quote 0
                                • 이광철이
                                  이광철 @이광철
                                  last edited by

                                  @이광철

                                  Alex-Kushleyev sorry.

                                  voxl2-mini:~$ cd /usr/bin
                                  voxl2-mini:/usr/bin$ spidev_test -D /dev/spidev3.0 -p "\x76\x00\xF5\x00"
                                  spi mode: 0x0
                                  bits per word: 8
                                  max speed: 500000 Hz (500 KHz)
                                  can't send spi message: Invalid argument
                                  Aborted

                                  This test was my mistake.

                                  Below are the final test results.
                                  voxl2-mini:/usr/bin$ spidev_test -D /dev/spidev3.0 -p "\x76\x00\xF5\x00"
                                  spi mode: 0x0
                                  bits per word: 8
                                  max speed: 500000 Hz (500 KHz)
                                  RX | 00 00 00 47 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ | ...G

                                  Alex KushleyevA 1 Reply Last reply Reply Quote 0
                                  • Alex KushleyevA
                                    Alex Kushleyev ModalAI Team @이광철
                                    last edited by

                                    @이광철 ,

                                    Please note that qrb5165io-spi-test -d 14 is a test app that just tries to detect a specific IMU on the SPI port. If the specific IMU is not connected, the test will not be successful.

                                    Are you able to read any data from your SPI sensor (using spidev_test -D /dev/spidev14.0 ... ? Can you share what your sensor is? You should look in the documentation of your sensor and it will tell you how to communicate with it. SPI protocol for reading / writing is specific to the device.

                                    Also, don't forget about the gpio setting that needs to be made before using SPI 14 (voxl-gpio -w 67 1). this needs to be run after each reboot.

                                    Alex

                                    이광철이 1 Reply Last reply Reply Quote 0
                                    • 이광철이
                                      이광철 @Alex Kushleyev
                                      last edited by

                                      @Alex-Kushleyev

                                      Please note that qrb5165io-spi-test -d 14 is a test app that just tries to detect a specific IMU on the SPI port. If the specific IMU is not connected, the test will not be successful.
                                      Yes I know.

                                      My spi device and test program works fine on volx2's J10.
                                      Please refer to j10 in the url below.
                                      https://docs.px4.io/main/en/flight_controller/modalai_voxl_2.html

                                      Alex KushleyevA 1 Reply Last reply Reply Quote 0
                                      • Alex KushleyevA
                                        Alex Kushleyev ModalAI Team @이광철
                                        last edited by

                                        @이광철 , do you still have any issue? Does spidev_test work with spi 14?

                                        이광철이 1 Reply Last reply Reply Quote 0
                                        • 이광철이
                                          이광철 @Alex Kushleyev
                                          last edited by

                                          @Alex-Kushleyev

                                          I tested it by connecting my spi device to j10.
                                          This spi device is working normally in voxl2.
                                          My program for testing also operates normally with this spi device in voxl2.

                                          voxl_spi_init(SPI_BUS, SPI_MODE_0, VOXL_SPI_MAX_SPEED) is OK
                                          but, there is no response to the voxl_spi_write function.

                                          Alex KushleyevA 1 Reply Last reply Reply Quote 0
                                          • Alex KushleyevA
                                            Alex Kushleyev ModalAI Team @이광철
                                            last edited by Alex Kushleyev

                                            @이광철 , can you confirm that you are setting gpio 67 on voxl2 mini before testing spi 14?

                                            이광철이 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB | Contributors