Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Collapse
Brand Logo

ModalAI Forum

  1. ModalAI Support Forum
  2. VOXL Dev Drones
  3. Sentinel
  4. Spektrum RC Bind Issues after SDK Update

Spektrum RC Bind Issues after SDK Update

Scheduled Pinned Locked Moved Sentinel
3 Posts 1 Posters 390 Views
  • 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.
  • J Offline
    J Offline
    jmltt
    Regular
    wrote on last edited by
    #1

    I've got an older Sentinel that shipped with Spektrum RC satellite receiver and some SDK pre v1.0.0 (I think it's SDK v0.8). It hasn't been used since we got it and I was setting up for first flight. I flashed the lastest SDK (1.6.3) and went through the set up procedure, calibrated it and flew it with the same Spektrum Transmitter I've used for some other Sentinels we've been flying more regularly.

    I noticed after power cycling the vehicle and transmitter (Spektrum SPM9900), the Spektrum receiver and transmitter appear to bind automatically as expected (solid orange light on transmitter and receiver light up at same time when powered on), but px4 never gets the RC data (px4-listener input_rc returns never published) until I force them to rebind by running voxl-bind-spektrum -s and setting the transmitter in bind mode.

    Does anyone know what could be causing this? I don't know enough about how the spektrum bind board (M0094) works, but reading through voxl-spektrum-bind.c I'm guessing this has something to do with the GPIO pin direction settings. Did the default settings change between SDK versions? I don't have this problem with other Sentinels running SDK 1.1

    1 Reply Last reply
    0
    • J Offline
      J Offline
      jmltt
      Regular
      wrote last edited by jmltt
      #2

      Ok so I've been comparing the Sentinel I have on an older SDK with no issues after power cycling with the one I just updated to the latest SDK and I noticed for the sentinel on the older SDK (1.1.2), the /sys/class/gpio only has the following

      voxl2:~$ ls /sys/class/gpio/
      export        gpiochip1076  gpiochip1094  unexport
      gpiochip1072  gpiochip1085  gpiochip1100
      

      where the sentinel with the latest SDK shows:

      sentinel (D0006):~$ ls /sys/class/gpio/
      export        gpio1152/     gpio1184/     gpio1213/     gpio1259/
      gpio1100/     gpio1153/     gpio1185/     gpio1214/     gpiochip1072/
      gpio1101/     gpio1154/     gpio1186/     gpio1224/     gpiochip1076/
      gpio1136/     gpio1155/     gpio1187/     gpio1231/     gpiochip1085/
      gpio1137/     gpio1156/     gpio1188/     gpio1252/     gpiochip1094/
      gpio1148/     gpio1157/     gpio1189/     gpio1253/     gpiochip1100/
      gpio1149/     gpio1167/     gpio1210/     gpio1254/     unexport
      gpio1150/     gpio1182/     gpio1211/     gpio1255/     
      gpio1151/     gpio1183/     gpio1212/     gpio1257/
      

      Then I ran voxl-bind-spektrum -ds on both and get nearly identical output, the SDK 1.6.3 the spektrum bind GPIO pin for M0154 is set even thought I'm on M0054

      SDK 1.6.3:

      sentinel (D0006):~$ voxl-bind-spektrum -ds
      Enabling debug mode
      Writing 1259 to /sys/class/gpio/export for gpio pin 1259
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1259
      Writing 1259 to /sys/class/gpio/export for gpio pin 1259
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1259
      Writing 1259 to /sys/class/gpio/export for gpio pin 1259
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1259
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      number of pulses: 7
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1120
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing in to /sys/class/gpio/gpio%d/direction for gpio pin 1146
      read 0 from gpio pin 1146
      Writing 1120 to /sys/class/gpio/export for gpio pin 1120
      Writing in to /sys/class/gpio/gpio%d/direction for gpio pin 1120
      read 0 from gpio pin 1120
      An orange light should now be flashing on your receiver
      If so, your receiver is successfully in binding mode
      

      SDK 1.1.2

      voxl2:~$ voxl-bind-spektrum -ds 
      Enabling debug mode
      Writing 1259 to /sys/class/gpio/export for gpio pin 1259
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1259
      Writing 1259 to /sys/class/gpio/export for gpio pin 1259
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1259
      Writing 1259 to /sys/class/gpio/export for gpio pin 1259
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1259
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      number of pulses: 7
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 1 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing 0 to /sys/class/gpio/gpio%d/value for gpio pin 1146
      Writing 1146 to /sys/class/gpio/export for gpio pin 1146
      Writing in to /sys/class/gpio/gpio%d/direction for gpio pin 1146
      read 0 from gpio pin 1146
      An orange light should now be flashing on your receiver
      If so, your receiver is successfully in binding mode
      

      Now the SDK1.1.2 quad shows:

      voxl2:~$ ls /sys/class/gpio/
      export    gpio1259      gpiochip1076  gpiochip1094  unexport
      gpio1146  gpiochip1072  gpiochip1085  gpiochip1100
      

      And SDK1.6.3:

      sentinel (D0006):~$ ls /sys/class/gpio/
      export    gpio1148  gpio1155  gpio1185  gpio1212  gpio1254      gpiochip1094
      gpio1100  gpio1149  gpio1156  gpio1186  gpio1213  gpio1255      gpiochip1100
      gpio1101  gpio1150  gpio1157  gpio1187  gpio1214  gpio1257      unexport
      gpio1120  gpio1151  gpio1167  gpio1188  gpio1224  gpio1259
      gpio1136  gpio1152  gpio1182  gpio1189  gpio1231  gpiochip1072
      gpio1137  gpio1153  gpio1183  gpio1210  gpio1252  gpiochip1076
      gpio1146  gpio1154  gpio1184  gpio1211  gpio1253  gpiochip1085
      

      The pin settings after running voxl-spektrum-bind are the same for both vehicles in /sys/class/gpio/gpio1146 and /sys/class/gpio/gpio1259. After power cycling I'm right back where I started, but the settings for gpio1259 persist on the v1.6.3 quad.

      I'm guessing I need to do something with the settings for gpio pin 46 or 159 to fix this. What should the gpio pin settings be on boot for a VOXL2 vehicle with an already bound spektrum receiver? Is the problem that /sys/class/gpio/gpio1259 settings persist between power cycles? Where are all these gpio settings getting written to on boot?

      1 Reply Last reply
      0
      • J jmltt referenced this topic
      • J Offline
        J Offline
        jmltt
        Regular
        wrote last edited by jmltt
        #3

        So I'm guessing this has to do with the following I noticed in the changelog:

        1.7.4
        (voxl2_SDK_1.1.3)

        BSP:

        • add voxl-fysnc-mod kernel module
        • add voxl-gpio-mod kernel module
          --- GPIO now exporting to /sys/class/gpio
        • convert SE13 from 4W to 2W UART, freeing GPIO36/37
        • add voxl-platform-mod kernel module
          --- see /sys/module/voxl_platform_mod/parameters
        • add new target 'M0054-2' support (same rootfs as M0054-1)
        • new kernel
        • new devcfg.mbn

        In system image 1.7.1 (SDK v1.1.2) on the drone that has no rc issues, recipes-kernel/linux-msm/files/dts/common/m0xxx-modalai-gpio.dtsi has:

        &soc {
        	b2b_conn_gpio_init {
        		compatible = "modalai,voxl-b2b";
        		pinctrl-names = "default";
        		pinctrl-0 = <&tck22912G_ctrl_pin &b2b_pin7 &b2b_pin9 &b2b_pin17 &b2b_pin19 &b2b_pin38 &b2b_pin40 &hs_b2b_pin41 &hs_b2b_pin42 &hs_b2b_pin43 &hs_b2b_pin44 &hs_b2b_pin46 &hs_b2b_pin47 &hs_b2b_pin50 &hs_b2b_pin51 &hs_b2b_pin78 &hs_b2b_pin79 &hs_b2b_pin80 &hs_b2b_pin81 &hs_b2b_pin82 &j10_lvl_shf_ctrl_pin>;
        		status = "ok";
        	};
        
        	rc_in_enable_init {
        		compatible = "modalai,voxl-rc-in";
        		pinctrl-names = "default";
        		pinctrl-0 = <&rc_in_3v3_en_pin>;
        		status = "ok";
        	};
        };
        

        In image 1.7.4 (SDK 1.1.3), recipes-kernel/linux-msm/files/dts/common/m0xxx-modalai-gpio.dtsi:

        &soc {
        	voxl_gpio {
        		compatible = "modalai,voxl-gpio";
        		pinctrl-names = "default";
        		pinctrl-0 = <&tck22912G_ctrl_pin 
        			&b2b_pin7 &b2b_pin9 &b2b_pin17 &b2b_pin19 &b2b_pin38 &b2b_pin40 
        			&hs_b2b_pin41 &hs_b2b_pin42 &hs_b2b_pin43 &hs_b2b_pin44 &hs_b2b_pin46 &hs_b2b_pin47 &hs_b2b_pin50 &hs_b2b_pin51 &hs_b2b_pin78 &hs_b2b_pin79 &hs_b2b_pin80 &hs_b2b_pin81 &hs_b2b_pin82 &hs_b2b_pin95 &hs_b2b_pin96
        			&j10_lvl_shf_ctrl_pin &rc_in_3v3_en_pin &ds2_led_red &ds2_led_green &ds2_led_blue &id_som_1 &id_som_2 &id_mai_3 &id_mai_4>;
        		
        		modalai,gpio-init-output-high = <0 1 53 56 57 85 86 87 88 89 124 152 157 159>;
        		modalai,gpio-init-output-low = <36 37 46 54 55 67 82 83 84 131 153 154 155>;
        		modalai,gpio-init-input = <48 49 50 51 52>;
        		
        		status = "ok";
        	};
        
        	voxl_fsync {
        		compatible = "modalai,voxl-fsync";
        		pinctrl-names = "default";
        		pinctrl-0 = <&camera_sync_110 &camera_sync_111 &camera_sync_112 &camera_sync_113 &camera_sync_114>;
        		
        		status = "ok";
        	};
        };
        

        And then in image 1.8.06 (SDK v1.6.3) that is on the drone with the bind issues, recipes-kernel/linux-msm/files/dts/common/m0xxx-modalai-gpio.dtsi:

        &soc {
        	voxl_gpio {
        		compatible = "modalai,voxl-gpio";
        		pinctrl-names = "default";
        		pinctrl-0 = <&tck22912G_ctrl_pin 
        			&b2b_pin7 &b2b_pin9 &b2b_pin17 &b2b_pin19 &b2b_pin38 &b2b_pin40 
        			&hs_b2b_pin41 &hs_b2b_pin42 &hs_b2b_pin43 &hs_b2b_pin44 &hs_b2b_pin46 &hs_b2b_pin47 &hs_b2b_pin50 &hs_b2b_pin51 &hs_b2b_pin78 &hs_b2b_pin79 &hs_b2b_pin80 &hs_b2b_pin81 &hs_b2b_pin82 &hs_b2b_pin95 &hs_b2b_pin96
        			&j10_lvl_shf_ctrl_pin &rc_in_3v3_en_pin &ds2_led_red &ds2_led_green &ds2_led_blue &id_som_1 &id_som_2 &id_mai_3 &id_mai_4
        			&camera_sync_110 &camera_sync_111 &camera_sync_112 &camera_sync_113 &camera_sync_114>;
        		
        		modalai,gpio-init-output-high = <0 1 53 56 57 67 85 86 87 88 89 124 152 157 159>;
        		modalai,gpio-init-output-low = <36 37 54 55 82 83 84 131 153 154 155>;
        		modalai,gpio-init-input = <48 49 50 51 52 110 111 112 113 114>;
        		
        		status = "ok";
        	};
        
        	voxl_fsync {
        		compatible = "modalai,voxl-fsync";
        		pinctrl-names = "default";
        		
        		status = "ok";
        	};
        };
        

        So the gpio initialization process changed and rc_in_enable_init was removed between SDK v1.1.2 and v1.1.3, and between SDK v1.1.3 and v1.6.3, GPIO pin 67 got moved from modalai,gpio-init-output-low to modalai,gpio-init-output-high and GPIO pin 46 got removed from modalai,gpio-init-output-low.

        Link Preview Image
        update to use voxl-gpio-mod (538c3247) · Commits · voxl / System Image Build / meta-voxl2-bsp · GitLab

        GitLab.com

        favicon

        GitLab (gitlab.com)

        Link Preview Image
        M0054 GPIO 46 CS 1 (ccd3893e) · Commits · voxl / System Image Build / meta-voxl2-bsp · GitLab

        GitLab.com

        favicon

        GitLab (gitlab.com)

        Idk which change is responsible for the binding issues. I'd like to avoid flashing v1.1.3 to narrow it down. Can someone explain how the pins are meant to function for my set-up (M0094 + M0054, rc already bound)?

        1 Reply Last reply
        0

        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

        With your input, this post could be even better 💗

        Register Login
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        ModalAI
        Categories Recent Tags ModalAI.com Docs
        © 2026 ModalAI® · Accelerating autonomy for smaller, smarter, safer drones · Powered by NodeBB
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups