Arductoper 3.5 not working on pi zero

I have tried compiling the copter 3.5 branch on my own for the pxfmini and it compiles fine however the resulting binary when run gives no output and just dies. I have tried the firmware that you guys build and offer for the pxfmini but it doesnt run as well. I have been having an issue with the dys f20a esc and my diy pxfmini using an mpu9250+ms5611 and a pca9685. I have a prior version that i compiled working.

pi@raspberrypi:~ $ strace ./arducopter
execve(“./arducopter”, [“./arducopter”], [/* 15 vars /]) = 0
brk(0) = 0x1558000
uname({sys=“Linux”, node=“raspberrypi”, …}) = 0
access(“/etc/ld.so.nohwcap”, F_OK) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff3000
access(“/etc/ld.so.preload”, R_OK) = 0
open(“/etc/ld.so.preload”, O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=42, …}) = 0
mmap2(NULL, 42, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb6ff2000
close(3) = 0
open(“/usr/lib/arm-linux-gnueabihf/libarmmem.so”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0h\5\0\0004\0\0\0”…, 512) = 512
lseek(3, 17960, SEEK_SET) = 17960
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 960) = 960
lseek(3, 17696, SEEK_SET) = 17696
read(3, “A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\3\f\1\22\4\24”…, 47) = 47
fstat64(3, {st_mode=S_IFREG|0644, st_size=18920, …}) = 0
mmap2(NULL, 83236, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6fb0000
mprotect(0xb6fb5000, 61440, PROT_NONE) = 0
mmap2(0xb6fc4000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0xb6fc4000
mprotect(0xbeba8000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC|PROT_GROWSDOWN) = 0
close(3) = 0
munmap(0xb6ff2000, 42) = 0
open(“/etc/ld.so.cache”, O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=25436, …}) = 0
mmap2(NULL, 25436, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6fec000
close(3) = 0
access(“/etc/ld.so.nohwcap”, F_OK) = 0
open(“/lib/arm-linux-gnueabihf/libdl.so.2”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\220\t\0\0004\0\0\0”…, 512) = 512
lseek(3, 8660, SEEK_SET) = 8660
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 1160) = 1160
lseek(3, 8328, SEEK_SET) = 8328
read(3, “A0\0\0\0aeabi\0\1&\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24”…, 49) = 49
fstat64(3, {st_mode=S_IFREG|0644, st_size=9820, …}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6feb000
mmap2(NULL, 73912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6f9d000
mprotect(0xb6f9f000, 61440, PROT_NONE) = 0
mmap2(0xb6fae000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6fae000
close(3) = 0
access(“/etc/ld.so.nohwcap”, F_OK) = 0
open(“/usr/lib/arm-linux-gnueabihf/libstdc++.so.6”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0xk\4\0004\0\0\0”…, 512) = 512
lseek(3, 808332, SEEK_SET) = 808332
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 1280) = 1280
lseek(3, 807760, SEEK_SET) = 807760
read(3, “A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25”…, 47) = 47
fstat64(3, {st_mode=S_IFREG|0644, st_size=809612, …}) = 0
mmap2(NULL, 900808, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ec1000
mprotect(0xb6f82000, 61440, PROT_NONE) = 0
mmap2(0xb6f91000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc0000) = 0xb6f91000
mmap2(0xb6f97000, 24264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6f97000
close(3) = 0
access(“/etc/ld.so.nohwcap”, F_OK) = 0
open(“/lib/arm-linux-gnueabihf/libm.so.6”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0p<\0\0004\0\0\0”…, 512) = 512
lseek(3, 434644, SEEK_SET) = 434644
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 1160) = 1160
lseek(3, 434312, SEEK_SET) = 434312
read(3, “A0\0\0\0aeabi\0\1&\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24”…, 49) = 49
fstat64(3, {st_mode=S_IFREG|0644, st_size=435804, …}) = 0
mmap2(NULL, 499856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e46000
mprotect(0xb6eaf000, 65536, PROT_NONE) = 0
mmap2(0xb6ebf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x69000) = 0xb6ebf000
close(3) = 0
access(“/etc/ld.so.nohwcap”, F_OK) = 0
open(“/lib/arm-linux-gnueabihf/libgcc_s.so.1”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0`\321\0\0004\0\0\0”…, 512) = 512
lseek(3, 116400, SEEK_SET) = 116400
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 1120) = 1120
lseek(3, 116072, SEEK_SET) = 116072
read(3, “A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25”…, 47) = 47
fstat64(3, {st_mode=S_IFREG|0644, st_size=117520, …}) = 0
mmap2(NULL, 181664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e19000
mprotect(0xb6e36000, 61440, PROT_NONE) = 0
mmap2(0xb6e45000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c000) = 0xb6e45000
close(3) = 0
access(“/etc/ld.so.nohwcap”, F_OK) = 0
open(“/lib/arm-linux-gnueabihf/libpthread.so.0”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0lY\0\0004\0\0\0”…, 512) = 512
lseek(3, 120788, SEEK_SET) = 120788
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 1520) = 1520
lseek(3, 86420, SEEK_SET) = 86420
read(3, “A0\0\0\0aeabi\0\1&\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24”…, 49) = 49
fstat64(3, {st_mode=S_IFREG|0755, st_size=122308, …}) = 0
mmap2(NULL, 160316, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6df1000
mprotect(0xb6e05000, 65536, PROT_NONE) = 0
mmap2(0xb6e15000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0xb6e15000
mmap2(0xb6e17000, 4668, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6e17000
close(3) = 0
access(“/etc/ld.so.nohwcap”, F_OK) = 0
open(“/lib/arm-linux-gnueabihf/libc.so.6”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0L\204\1\0004\0\0\0”…, 512) = 512
lseek(3, 1239936, SEEK_SET) = 1239936
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 2840) = 2840
lseek(3, 1236500, SEEK_SET) = 1236500
read(3, “A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24”…, 47) = 47
fstat64(3, {st_mode=S_IFREG|0755, st_size=1242776, …}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fea000
mmap2(NULL, 1312152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6cb0000
mprotect(0xb6ddb000, 65536, PROT_NONE) = 0
mmap2(0xb6deb000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12b000) = 0xb6deb000
mmap2(0xb6dee000, 9624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6dee000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe9000
set_tls(0xb6fe94c0, 0xb6fe9bb8, 0xb6ff5050, 0xb6fe94c0, 0xb6ff5050) = 0
mprotect(0xb6deb000, 8192, PROT_READ) = 0
mprotect(0xb6e15000, 4096, PROT_READ) = 0
mprotect(0xb6ebf000, 4096, PROT_READ) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fe8000
mprotect(0xb6f91000, 16384, PROT_READ) = 0
mprotect(0xb6fae000, 4096, PROT_READ) = 0
mprotect(0xb6fb0000, 20480, PROT_READ|PROT_WRITE) = 0
mprotect(0xb6fb0000, 20480, PROT_READ|PROT_EXEC) = 0
cacheflush(0xb6fb0000, 0xb6fb5000, 0, 0x15, 0xbeba8370) = 0
mprotect(0xf7000, 4096, PROT_READ) = 0
mprotect(0xb6ff4000, 4096, PROT_READ) = 0
munmap(0xb6fec000, 25436) = 0
set_tid_address(0xb6fe9068) = 894
set_robust_list(0xb6fe9070, 12) = 0
rt_sigaction(SIGRTMIN, {0xb6df6434, [], SA_RESTORER|SA_SIGINFO, 0xb6cdf1a0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb6df62d8, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0xb6cdf1a0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192
1024, rlim_max=RLIM_INFINITY}) = 0
— SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x2} —
+++ killed by SIGSEGV +++
Segmentation fault

Hello,
May I suggest that you report this error on the Erle Robotics Forum ?
I know that there are some problems related to the PXF-MINI being adressed by their team on the forum actually.
Personally, I experienced a problem with on my DIY RPI Zero FC when using the PPM receiver input because it is using an inefficient interrupt routine to decode the radio signal, resulting in intermittent segmentation fault & crashing , making this FC practically useless. I reported this problem a few months ago to Lander Usategui San Juan @LanderU , and did not get update since. BTW I was cross compiling using WAF.

I

I also compiled using waf. I may end trying out px4 on this board if I am able to get it going. I am familiar with arducopter and have used it mainly on linux boards. I love my bbbmini and navio2 which i unfortunately lost in a flyaway but this pxfmini has been giving me nothing but trouble when it comes to the software side of things.

I was hoping to use an updated version of arducopter as I thought that may be causing my dshot esc’s to not work as intended. I will go home and check out some hardware related things to make sure it is indeed software and not hardware related.

I initially posted my issue with the compiled file not working on github and my issue was closed and recommended i post here. Even using the binary compiled and provided on the firmware page resulted in a program that crashed with no hints.

Hi @awright424 and @ppoirier,

right now the ArduPilot is broken for Erle Boards, not only ArduCopter, also the other vehicles.

@awright424, regarding to your doubts, if you’re sure the problem is the hardware, you can request a RMA.

we have a stable ArduPilot version you can deploy it using the debian packages.

Regards,

@LanderU

Can you explain what is broken currently? That would be helpful in determining if I have a hard issue versus software. If its a hardware issue I need to have this speed controller replaced

@LanderU its been a few month now that this problem has been identified.
Personally I investigated a little and this seems to related to the flawed PPM interrupt handling within the RPI.
Looking here, @lucasdemarchi worked on a PR to resolve the issue: https://github.com/ArduPilot/ardupilot/commit/8d3361cef4c13b60b0326e1a3a8dcd2748d268c7

But it still have the issue on my RPI Zero FC. @lucasdemarchi offered to help me on this, but I did not really pushed forward considering that its a ‘‘one of a kind DIY FC : The MINIZEE’’ and I was expecting that you investigate further because of your commercial application and large customer base. Incidentally , I cannot see any request or any PR related to this issue, either from you or other Erle Robotics support staff, did I miss something here ?

@LanderU I hate to say thats a bit ambiguous but that is exactly what you have just provided. what is not working? when this is fixed will this image etc be on a per request basis, which I feel is non-sense. If you guys have ros specific items etc that you have developed then provide a bare image or make things more accessible for those that would like to build it themselves.

Thanks to @lucasdemarchi my RPI Zero based FC controler is now fixed and ready to fly :slight_smile:

1 Like

@ppoirier what build are you using? I had compiled the latest to test the other day but kept having issues with it disconnecting from my groundcontrol station after connecting initially and that would it be it. I have been able to get in the air with 3.4.6 but still working on tuning as I havent been able to get autotune to work yet.

Its been fixed 2 hours ago == its now on master you can give it a try

that may have been my problem as I had checked out copter-3.5 but I will checkout out master now and try to compile

well I was able to compile but with the pi zero w i get disconnected using udp after a few seconds after initially connecting. I don’t know if anyone else is experiencing this

Is the RPI Zero it connected to a screen?
Can you check the process running ?

im connected through ssh and its connected to my network fine. I see no issues with the binary running. I just noticed it disconnects using -C udp:ip:14550 which has worked fine for me till now

@ppoirier, thanks for testing this fix.
This will go out with -rc7 later this week.

1 Like