No motor/servo output from BeagleBone Blue

Back to work this week so no time to play with Ardupilot. We’ll see about the weekend.

Ok

Good luck :slight_smile:
If you need something post here

The combination that turns out to work for me is:

Kernel: 4.19.94-ti-rt-r73
PRU Overlay: AM335X-PRU-RPROC-4-19-TI-00A0.dtbo

With that combination, no other changes are required.

Thanks for your help.

Great

I will call guys from beaglebone forum to check that

Best regards and great flights

Hello,

I am having the same issue. I tried the listed kernel and PRU overlay by dmazan and am still not getting any outputs from the servos.

Here is my output for version.sh:

git:/opt/scripts/:[f8c83c99de67443f0a2f573e21e1320c98ab33a7]

eeprom:[A335BNLTBLA21736EL000695]

model:[TI_AM335x_BeagleBone_Blue]

dogtag:[BeagleBoard.org Debian Buster Console Image 2023-02-05]

bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot SPL 2019.04-g923f8b8 (Jan 02 2022 - 19:05:15 +0000)]:[location: dd MBR]

bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot 2019.04-g923f8b8]:[location: dd MBR]

UBOOT: Booted Device-Tree:[am335x-boneblue.dts]

UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0.kernel]

UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]

kernel:[4.19.94-ti-r73]

device-tree-override:[dtb=am335x-boneblue.dtb]

/boot/uEnv.txt Settings:

uboot_overlay_options:[enable_uboot_overlays=1]

uboot_overlay_options:[uboot_overlay_pru=AM335X-PRU-RPROC-4-19-TI-00A0.dtbo]

uboot_overlay_options:[enable_uboot_cape_universal=1]

pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]

pkg:[bb-cape-overlays]:[4.14.20210821.0-0~buster+20210821]

pkg:[bb-customizations]:[1.20221108.0-0~buster+20221108]

pkg:[bb-usb-gadgets]:[1.20220816.0-0~buster+20220816]

pkg:[bb-wl18xx-firmware]:[1.20221201.0-0~buster+20221201]

pkg:[kmod]:[26-1]

WARNING:pkg:[librobotcontrol]:[NOT_INSTALLED]

pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]

groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input bluetooth netdev gpio admin i2c tisdk weston-launch cloud9ide]

cmdline:[console=ttyS0,115200n8 bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk1p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]

dmesg | grep remote

[ 10.119598] remoteproc remoteproc0: 4a334000.pru is available

[ 10.129968] remoteproc remoteproc1: 4a338000.pru is available

[ 29.644607] remoteproc remoteproc2: wkup_m3 is available

[ 29.651771] remoteproc remoteproc2: powering up wkup_m3

[ 29.651800] remoteproc remoteproc2: Booting fw image am335x-pm-firmware.elf, size 217148

[ 29.657669] remoteproc remoteproc2: remote processor wkup_m3 is now up

[ 43.982692] Modules linked in: xt_state xt_conntrack nft_counter nft_chain_nat_ipv4 ipt_MASQUERADE nft_compat aes_arm_bs crypto_simd cryptd bnep wl18xx wlcore hci_uart btqca btbcm btintel bluetooth mac80211 ecdh_generic cfg80211 pm33xx wkup_m3_rproc wkup_m3_ipc wlcore_sdio usb_f_acm u_serial usb_f_ncm usb_f_rndis u_ether libcomposite uio_pdrv_genirq uio pruss_soc_bus pru_rproc pruss irq_pruss_intc remoteproc virtio virtio_ring spidev

dmesg | grep pru

[ 10.119598] remoteproc remoteproc0: 4a334000.pru is available

[ 10.119789] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully

[ 10.129968] remoteproc remoteproc1: 4a338000.pru is available

[ 10.130156] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully

[ 43.982692] Modules linked in: xt_state xt_conntrack nft_counter nft_chain_nat_ipv4 ipt_MASQUERADE nft_compat aes_arm_bs crypto_simd cryptd bnep wl18xx wlcore hci_uart btqca btbcm btintel bluetooth mac80211 ecdh_generic cfg80211 pm33xx wkup_m3_rproc wkup_m3_ipc wlcore_sdio usb_f_acm u_serial usb_f_ncm usb_f_rndis u_ether libcomposite uio_pdrv_genirq uio pruss_soc_bus pru_rproc pruss irq_pruss_intc remoteproc virtio virtio_ring spidev

dmesg | grep pinctrl-single

[ 0.954373] pinctrl-single 44e10800.pinmux: 142 pins, size 568

dmesg | grep gpio-of-helper

END

Thanks

With a quick look I think you have the wrong kernel. I was successful following the Ardupilot instructions to the letter with the exception of:

Kernel: 4.19.94-ti-rt-r73
PRU Overlay: AM335X-PRU-RPROC-4-19-TI-00A0.dtbo

It looks like you have kernel: 4.19.94-ti-r73 which is not the real-time kernel so won’t work.

Do you know how I can get the TI real-time kernel?

All the Ardupilot instructions use the bone-rt kernel, which didn’t work during testing so far.

I will try the 4.19 bone-rt kernel with UIO, as that is what they were using in the guide, although I doubt it will work as I haven’t had much success with any of the UIO PRU overlays.

EDIT:

Here is the command for getting the 4.19.94-ti-rt-r73 kernel.

Found it here from the Ardupilot tutorial: Beagleboard:BeagleBoneBlack Debian - eLinux.org

sudo /opt/scripts/tools/update_kernel.sh --ti-rt-channel --lts-4_19

Version.sh now outputs this:

git:/opt/scripts/:[1b1122751f7051bd8996f353756ba6ff30e71820]

eeprom:[A335BNLTBLA21736EL000695]

model:[TI_AM335x_BeagleBone_Blue]

dogtag:[BeagleBoard.org Debian Buster Console Image 2023-02-05]

bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot SPL 2019.04-g923f8b8 (Jan 02 2022 - 19:05:15 +0000)]:[location: dd MBR]

bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot 2019.04-g923f8b8]:[location: dd MBR]

UBOOT: Booted Device-Tree:[am335x-boneblue.dts]

UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0.kernel]

UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]

kernel:[4.19.94-ti-rt-r73]

device-tree-override:[dtb=am335x-boneblue.dtb]

/boot/uEnv.txt Settings:

uboot_overlay_options:[enable_uboot_overlays=1]

uboot_overlay_options:[uboot_overlay_pru=AM335X-PRU-RPROC-4-19-TI-00A0.dtbo]

uboot_overlay_options:[enable_uboot_cape_universal=1]

pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]

pkg:[bb-cape-overlays]:[4.14.20210821.0-0~buster+20210821]

pkg:[bb-customizations]:[1.20221108.0-0~buster+20221108]

pkg:[bb-usb-gadgets]:[1.20220816.0-0~buster+20220816]

pkg:[bb-wl18xx-firmware]:[1.20221201.0-0~buster+20221201]

pkg:[kmod]:[26-1]

WARNING:pkg:[librobotcontrol]:[NOT_INSTALLED]

pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]

groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input bluetooth netdev gpio admin i2c tisdk weston-launch cloud9ide]

cmdline:[console=ttyS0,115200n8 bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk1p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]

dmesg | grep remote

[ 33.606865] remoteproc remoteproc0: wkup_m3 is available

[ 33.691149] remoteproc remoteproc0: powering up wkup_m3

[ 33.691184] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148

[ 33.691471] remoteproc remoteproc0: remote processor wkup_m3 is now up

[ 35.704721] remoteproc remoteproc1: 4a334000.pru is available

[ 35.715811] remoteproc remoteproc2: 4a338000.pru is available

dmesg | grep pru

[ 35.704721] remoteproc remoteproc1: 4a334000.pru is available

[ 35.704989] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully

[ 35.715811] remoteproc remoteproc2: 4a338000.pru is available

[ 35.715993] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully

dmesg | grep pinctrl-single

[ 1.139490] pinctrl-single 44e10800.pinmux: 142 pins, size 568

dmesg | grep gpio-of-helper

END

Servos still don’t work though. I am running out of things that could possibly be the issue. Might have to try running this on another BeagleBone.

Hi

Appear your pru is loading correctly.
How are you powering your servo? Are you connected an esc too?
What are you intending to run/use your beagle?

I am powering the BeagleBone from the 2s Li-po connector and have set up the servo functions for an Elevon plane based on Arduplane as below:

| SERVO1_FUNCTION | 77 | Left eleven |
| SERVO2_FUNCTION | 78 | Right eleven |
| SERVO3_FUNCTION | 70 | Throttle |

I checked the voltage with a multimeter, and 6V is applied to the servo rail, but the signal output is always 0.25V. When I check on another flight computer, the signal changes from 0V to 0.45V when sweeping, but the signal never changes on the BeagleBone.

There is an ESC connected to output 3, but only the signal wire with no VCC or GND, as the ESC would also output 5V. Is there anything I am missing here?

Are the esc beeping ? Have you compiled the samples or ardupilot and tried the rcoutput sample?

When I power on the ESC, it beeps steadily until the BeagleBone turns on, and it beeps quickly a couple of times and is then silent.

I don’t know where the rcoutput sample would be to compile it, so I haven’t done that. I tried making and running the RcAioPRUTest but couldn’t find it, as I only have the compiled firmware according to the Ardupilot instructions.

Run ./waf examples to generate the examples.

Sorry for my ignorance, but do I have to clone the Ardupilot repository to generate these examples? I believe I also need to install python, but I am not sure.

Thanks for your help

I did some more troubleshooting, and there seems to be an output from the servo headers as my ESC is turning on and the motor is spinning. I believe that means that there is definitely an output from the servos, and the PRU is working, so is there an issue with my servos?

I tested the servos again on another flight controller and they work so could it be an issue with my Mission Planner parameters?

How are you trying to test your servos? using ardupilot ?
and there is power in the servo rail ?
IF the motor is spinning is signal the pru is working.
Another thing, is the digital or analog servo? and what is the frequency? 50hz or 400hz?

Just tested the output with some other servos I had lying around. Seems like the servos I got just didn’t work with the BeagleBone for some reason. I might buy some more servos, but for now, I will just switch out the servos.

But in terms of Kernels and overlays to get an output to the ESC only the ones that were listed above worked for me.

What is this servo model and manufacturer?
And what is the servo frenquency?

Once you have the esc working, the pru for servo and esc is ok. What is the receiver you want to use?

I think the MG90S servos I got were counterfeits and even though it says they should have worked at 50hz they just don’t. I switched them out, and now the elevons work just fine.

I already connected my receiver to pin 4 on the E4 connecter and the FlySky receiver works as well and the elevons are moving to the RC inputs.

Thanks for your help.

Great

If you need something just ping.