Raspberry Pi Camera not working on Buster

raspistill and raspivid work properly on resin/raspberrypi3-node and resin/raspberrypi3-python images.

However, raspistill and raspivid lock up/hang on balenalib/raspberrypi3-node and balenalib/raspberrypi3-debian-node images.

Possibly Buster related?

Hey @Jassky

You can check the documentation for the new base images here https://www.balena.io/docs/reference/base-images/base-images/

You can set the desired debian version.
For example: balenalib/raspberrypi3-debian-node:10.10-stretch-build

Please let me know if this helps,
Cheers

Thanks, @dansku. Though it seems the raspistill/raspivid are currently only working on Jessie based images. It fails on all stretch and buster images I’ve tested.

Can anybody confirm?

@Jassky, do you happen to have a Dockerfile or docker-compose.yml that reproduces the problem? Or a pointer to some project / repo? And is it necessary to have the camera hardware to reproduce the issue? (Because I have a Raspberry Pi 3, but not the camera kit…)

Also, if you haven’t, try passing the --verbose command-line option to raspistill / raspivid, as it may reveal more about the issue:

--verbose, -v   Output verbose (debugging) information during run

You can reproduce raspistill hanging by using this Buster-based Dockerfile:

FROM balenalib/raspberrypi3-node:8
WORKDIR /usr/src
CMD modprobe bcm2835-v4l2 && raspistill -o test.jpg

And notice how raspistill works correctly when using this Jessie-based Dockerfile:

FROM resin/raspberrypi3-node:8
WORKDIR /usr/src
CMD modprobe bcm2835-v4l2 && raspistill -o test.jpg

@pdcastro It seems to reproduce both with the camera plugged in and unplugged. I also tried the verbose flags on raspivid and raspistill and did not see any additional info. I ran an strace. Notice the second-to-last line: EAGAIN (Resource temporarily unavailable)

root@e691873:/usr/src# strace raspistill -o test.jpg
execve("/usr/bin/raspistill", ["raspistill", "-o", "test.jpg"], 0x7e8ad828 /* 47 vars */) = 0
brk(NULL)                               = 0xe07000
uname({sysname="Linux", nodename="e691873", ...}) = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76f4c000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=10833, ...}) = 0
mmap2(NULL, 10833, PROT_READ, MAP_PRIVATE, 3, 0) = 0x76f49000
close(3)                                = 0
openat(AT_FDCWD, "/opt/vc/lib/libmmal_core.so", O_RDONLY|O_LARGEFILE|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<,\0\0004\0\0\0"..., 512) = 512
_llseek(3, 80768, [80768], SEEK_SET)    = 0
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"..., 1400) = 1400
_llseek(3, 56418, [56418], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 80768, [80768], SEEK_SET)    = 0
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"..., 1400) = 1400
_llseek(3, 56418, [56418], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 80768, [80768], SEEK_SET)    = 0
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"..., 1400) = 1400
_llseek(3, 56418, [56418], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 80768, [80768], SEEK_SET)    = 0
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"..., 1400) = 1400
_llseek(3, 56418, [56418], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 80768, [80768], SEEK_SET)    = 0
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"..., 1400) = 1400
_llseek(3, 56418, [56418], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
fstat64(3, {st_mode=S_IFREG|0644, st_size=82168, ...}) = 0
mmap2(NULL, 121964, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76f08000
mprotect(0x76f16000, 61440, PROT_NONE)  = 0
mmap2(0x76f25000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x76f25000
close(3)                                = 0
openat(AT_FDCWD, "/opt/vc/lib/libmmal_util.so", O_RDONLY|O_LARGEFILE|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\360-\0\0004\0\0\0"..., 512) = 512
_llseek(3, 89656, [89656], SEEK_SET)    = 0
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"..., 1440) = 1440
_llseek(3, 62542, [62542], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 89656, [89656], SEEK_SET)    = 0
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"..., 1440) = 1440
_llseek(3, 62542, [62542], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 89656, [89656], SEEK_SET)    = 0
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"..., 1440) = 1440
_llseek(3, 62542, [62542], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 89656, [89656], SEEK_SET)    = 0
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"..., 1440) = 1440
_llseek(3, 62542, [62542], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 89656, [89656], SEEK_SET)    = 0
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"..., 1440) = 1440
_llseek(3, 62542, [62542], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
fstat64(3, {st_mode=S_IFREG|0644, st_size=91096, ...}) = 0
mmap2(NULL, 128024, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76ee8000
mprotect(0x76ef8000, 61440, PROT_NONE)  = 0
mmap2(0x76f07000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0x76f07000
close(3)                                = 0
openat(AT_FDCWD, "/opt/vc/lib/libmmal_vc_client.so", O_RDONLY|O_LARGEFILE|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|\33\0\0004\0\0\0"..., 512) = 512
_llseek(3, 43600, [43600], SEEK_SET)    = 0
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"..., 1080) = 1080
_llseek(3, 33750, [33750], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 43600, [43600], SEEK_SET)    = 0
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"..., 1080) = 1080
_llseek(3, 33750, [33750], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 43600, [43600], SEEK_SET)    = 0
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"..., 1080) = 1080
_llseek(3, 33750, [33750], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 43600, [43600], SEEK_SET)    = 0
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"..., 1080) = 1080
_llseek(3, 33750, [33750], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
fstat64(3, {st_mode=S_IFREG|0644, st_size=44680, ...}) = 0
mmap2(NULL, 110104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76ecd000
mprotect(0x76ed5000, 65536, PROT_NONE)  = 0
mmap2(0x76ee5000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x76ee5000
mmap2(0x76ee6000, 7704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76ee6000
close(3)                                = 0
openat(AT_FDCWD, "/opt/vc/lib/libbrcmGLESv2.so", O_RDONLY|O_LARGEFILE|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\2209\0\0004\0\0\0"..., 512) = 512
_llseek(3, 104528, [104528], SEEK_SET)  = 0
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"..., 1240) = 1240
_llseek(3, 82602, [82602], SEEK_SET)    = 0
read(3, "A9\0\0\0aeabi\0\1/\0\0\0\5ARM1176JZF-S\0\6\7"..., 58) = 58
_llseek(3, 104528, [104528], SEEK_SET)  = 0
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"..., 1240) = 1240
_llseek(3, 82602, [82602], SEEK_SET)    = 0
read(3, "A9\0\0\0aeabi\0\1/\0\0\0\5ARM1176JZF-S\0\6\7"..., 58) = 58
_llseek(3, 104528, [104528], SEEK_SET)  = 0
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"..., 1240) = 1240
_llseek(3, 82602, [82602], SEEK_SET)    = 0
read(3, "A9\0\0\0aeabi\0\1/\0\0\0\5ARM1176JZF-S\0\6\7"..., 58) = 58
_llseek(3, 104528, [104528], SEEK_SET)  = 0
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"..., 1240) = 1240
_llseek(3, 82602, [82602], SEEK_SET)    = 0
read(3, "A9\0\0\0aeabi\0\1/\0\0\0\5ARM1176JZF-S\0\6\7"..., 58) = 58
fstat64(3, {st_mode=S_IFREG|0644, st_size=105768, ...}) = 0
mmap2(NULL, 148084, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76ea8000
mprotect(0x76ebc000, 65536, PROT_NONE)  = 0
mmap2(0x76ecc000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x76ecc000
close(3)                                = 0
openat(AT_FDCWD, "/opt/vc/lib/libbrcmEGL.so", O_RDONLY|O_LARGEFILE|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\374i\0\0004\0\0\0"..., 512) = 512
_llseek(3, 200832, [200832], SEEK_SET)  = 0
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"..., 1240) = 1240
_llseek(3, 166098, [166098], SEEK_SET)  = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 200832, [200832], SEEK_SET)  = 0
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"..., 1240) = 1240
_llseek(3, 166098, [166098], SEEK_SET)  = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 200832, [200832], SEEK_SET)  = 0
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"..., 1240) = 1240
_llseek(3, 166098, [166098], SEEK_SET)  = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 200832, [200832], SEEK_SET)  = 0
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"..., 1240) = 1240
_llseek(3, 166098, [166098], SEEK_SET)  = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
fstat64(3, {st_mode=S_IFREG|0644, st_size=202072, ...}) = 0
mmap2(NULL, 232596, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76e6f000
mprotect(0x76e97000, 65536, PROT_NONE)  = 0
mmap2(0x76ea7000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x76ea7000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libm.so.6", O_RDONLY|O_LARGEFILE|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\250r\0\0004\0\0\0"..., 512) = 512
_llseek(3, 434644, [434644], SEEK_SET)  = 0
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"..., 1080) = 1080
_llseek(3, 434288, [434288], SEEK_SET)  = 0
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 53) = 53
_llseek(3, 434644, [434644], SEEK_SET)  = 0
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"..., 1080) = 1080
_llseek(3, 434288, [434288], SEEK_SET)  = 0
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 53) = 53
_llseek(3, 434644, [434644], SEEK_SET)  = 0
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"..., 1080) = 1080
_llseek(3, 434288, [434288], SEEK_SET)  = 0
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 53) = 53
fstat64(3, {st_mode=S_IFREG|0644, st_size=435724, ...}) = 0
mmap2(NULL, 499832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76df4000
mprotect(0x76e5e000, 61440, PROT_NONE)  = 0
mmap2(0x76e6d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x69000) = 0x76e6d000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0000\n\0\0004\0\0\0"..., 512) = 512
_llseek(3, 8692, [8692], SEEK_SET)      = 0
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"..., 1080) = 1080
_llseek(3, 8340, [8340], SEEK_SET)      = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 8692, [8692], SEEK_SET)      = 0
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"..., 1080) = 1080
_llseek(3, 8340, [8340], SEEK_SET)      = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 8692, [8692], SEEK_SET)      = 0
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"..., 1080) = 1080
_llseek(3, 8340, [8340], SEEK_SET)      = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0644, st_size=9772, ...}) = 0
mmap2(NULL, 73924, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76de1000
mprotect(0x76de3000, 61440, PROT_NONE)  = 0
mmap2(0x76df2000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x76df2000
close(3)                                = 0
openat(AT_FDCWD, "/opt/vc/lib/libvcsm.so", O_RDONLY|O_LARGEFILE|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\324\v\0\0004\0\0\0"..., 512) = 512
_llseek(3, 27984, [27984], SEEK_SET)    = 0
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"..., 1040) = 1040
_llseek(3, 22642, [22642], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 27984, [27984], SEEK_SET)    = 0
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"..., 1040) = 1040
_llseek(3, 22642, [22642], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 27984, [27984], SEEK_SET)    = 0
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"..., 1040) = 1040
_llseek(3, 22642, [22642], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 27984, [27984], SEEK_SET)    = 0
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"..., 1040) = 1040
_llseek(3, 22642, [22642], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
fstat64(3, {st_mode=S_IFREG|0644, st_size=29024, ...}) = 0
mmap2(NULL, 100504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76dc8000
mprotect(0x76dce000, 61440, PROT_NONE)  = 0
mmap2(0x76ddd000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x76ddd000
mmap2(0x76dde000, 10392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76dde000
close(3)                                = 0
openat(AT_FDCWD, "/opt/vc/lib/libbcm_host.so", O_RDONLY|O_LARGEFILE|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\260?\0\0004\0\0\0"..., 512) = 512
_llseek(3, 109116, [109116], SEEK_SET)  = 0
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"..., 1080) = 1080
_llseek(3, 87278, [87278], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 109116, [109116], SEEK_SET)  = 0
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"..., 1080) = 1080
_llseek(3, 87278, [87278], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 109116, [109116], SEEK_SET)  = 0
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"..., 1080) = 1080
_llseek(3, 87278, [87278], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 109116, [109116], SEEK_SET)  = 0
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"..., 1080) = 1080
_llseek(3, 87278, [87278], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
fstat64(3, {st_mode=S_IFREG|0644, st_size=110196, ...}) = 0
mmap2(NULL, 165272, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76d9f000
mprotect(0x76db4000, 65536, PROT_NONE)  = 0
mmap2(0x76dc4000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x76dc4000
mmap2(0x76dc5000, 9624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76dc5000
close(3)                                = 0
openat(AT_FDCWD, "/opt/vc/lib/libvchiq_arm.so", O_RDONLY|O_LARGEFILE|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(\26\0\0004\0\0\0"..., 512) = 512
_llseek(3, 29248, [29248], SEEK_SET)    = 0
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"..., 1040) = 1040
_llseek(3, 21226, [21226], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 29248, [29248], SEEK_SET)    = 0
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"..., 1040) = 1040
_llseek(3, 21226, [21226], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 29248, [29248], SEEK_SET)    = 0
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"..., 1040) = 1040
_llseek(3, 21226, [21226], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 29248, [29248], SEEK_SET)    = 0
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"..., 1040) = 1040
_llseek(3, 21226, [21226], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
fstat64(3, {st_mode=S_IFREG|0644, st_size=30288, ...}) = 0
mmap2(NULL, 88456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76d89000
mprotect(0x76d8f000, 61440, PROT_NONE)  = 0
mmap2(0x76d9e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x76d9e000
close(3)                                = 0
openat(AT_FDCWD, "/opt/vc/lib/libvcos.so", O_RDONLY|O_LARGEFILE|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\210*\0\0004\0\0\0"..., 512) = 512
_llseek(3, 168004, [168004], SEEK_SET)  = 0
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"..., 1360) = 1360
_llseek(3, 34470, [34470], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 168004, [168004], SEEK_SET)  = 0
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"..., 1360) = 1360
_llseek(3, 34470, [34470], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 168004, [168004], SEEK_SET)  = 0
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"..., 1360) = 1360
_llseek(3, 34470, [34470], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
_llseek(3, 168004, [168004], SEEK_SET)  = 0
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"..., 1360) = 1360
_llseek(3, 34470, [34470], SEEK_SET)    = 0
read(3, "A;\0\0\0aeabi\0\0011\0\0\0\5ARM1176JZF-S\0\6\7"..., 60) = 60
fstat64(3, {st_mode=S_IFREG|0644, st_size=169364, ...}) = 0
mmap2(NULL, 102288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76d70000
mprotect(0x76d79000, 61440, PROT_NONE)  = 0
mmap2(0x76d88000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x76d88000
close(3)                                = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76f47000
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0001M\0\0004\0\0\0"..., 512) = 512
_llseek(3, 108864, [108864], SEEK_SET)  = 0
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"..., 1400) = 1400
_llseek(3, 74184, [74184], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 108864, [108864], SEEK_SET)  = 0
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"..., 1400) = 1400
_llseek(3, 74184, [74184], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 108864, [108864], SEEK_SET)  = 0
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"..., 1400) = 1400
_llseek(3, 74184, [74184], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 108864, [108864], SEEK_SET)  = 0
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"..., 1400) = 1400
_llseek(3, 74184, [74184], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 108864, [108864], SEEK_SET)  = 0
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"..., 1400) = 1400
_llseek(3, 74184, [74184], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 108864, [108864], SEEK_SET)  = 0
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"..., 1400) = 1400
_llseek(3, 74184, [74184], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0755, st_size=110264, ...}) = 0
mmap2(NULL, 148080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76d4b000
mprotect(0x76d5d000, 61440, PROT_NONE)  = 0
mmap2(0x76d6c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x76d6c000
mmap2(0x76d6e000, 4720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76d6e000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0 \30\0\0004\0\0\0"..., 512) = 512
_llseek(3, 21268, [21268], SEEK_SET)    = 0
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"..., 1240) = 1240
_llseek(3, 20856, [20856], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 21268, [21268], SEEK_SET)    = 0
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"..., 1240) = 1240
_llseek(3, 20856, [20856], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 21268, [21268], SEEK_SET)    = 0
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"..., 1240) = 1240
_llseek(3, 20856, [20856], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
_llseek(3, 21268, [21268], SEEK_SET)    = 0
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"..., 1240) = 1240
_llseek(3, 20856, [20856], SEEK_SET)    = 0
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0644, st_size=22508, ...}) = 0
mmap2(NULL, 86552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76d35000
mprotect(0x76d3a000, 61440, PROT_NONE)  = 0
mmap2(0x76d49000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x76d49000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\09v\1\0004\0\0\0"..., 512) = 512
_llseek(3, 949188, [949188], SEEK_SET)  = 0
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
_llseek(3, 945756, [945756], SEEK_SET)  = 0
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 53) = 53
_llseek(3, 949188, [949188], SEEK_SET)  = 0
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
_llseek(3, 945756, [945756], SEEK_SET)  = 0
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 53) = 53
_llseek(3, 949188, [949188], SEEK_SET)  = 0
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
_llseek(3, 945756, [945756], SEEK_SET)  = 0
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 53) = 53
_llseek(3, 949188, [949188], SEEK_SET)  = 0
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
_llseek(3, 945756, [945756], SEEK_SET)  = 0
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 53) = 53
_llseek(3, 949188, [949188], SEEK_SET)  = 0
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
_llseek(3, 945756, [945756], SEEK_SET)  = 0
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 53) = 53
_llseek(3, 949188, [949188], SEEK_SET)  = 0
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
_llseek(3, 945756, [945756], SEEK_SET)  = 0
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 53) = 53
fstat64(3, {st_mode=S_IFREG|0755, st_size=952028, ...}) = 0
mmap2(NULL, 1020732, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x76c3b000
mprotect(0x76d1f000, 65536, PROT_NONE)  = 0
mmap2(0x76d2f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe4000) = 0x76d2f000
mmap2(0x76d32000, 9020, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76d32000
close(3)                                = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76f45000
set_tls(0x76f454d0)                     = 0
mprotect(0x76d2f000, 8192, PROT_READ)   = 0
mprotect(0x76d6c000, 4096, PROT_READ)   = 0
mprotect(0x76d49000, 4096, PROT_READ)   = 0
mprotect(0x76df2000, 4096, PROT_READ)   = 0
mprotect(0x76e6d000, 4096, PROT_READ)   = 0
mprotect(0x76f4e000, 4096, PROT_READ)   = 0
munmap(0x76f49000, 10833)               = 0
set_tid_address(0x76f45078)             = 506
set_robust_list(0x76f45080, 12)         = 0
rt_sigaction(SIGRTMIN, {sa_handler=0x76d4f89d, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x76c60cb1}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x76d4f921, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x76c60cb1}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
futex(0x76d88770, FUTEX_WAKE_PRIVATE, 2147483647) = 0
brk(NULL)                               = 0xe07000
brk(0xe28000)                           = 0xe28000
openat(AT_FDCWD, "/dev/vchiq", O_RDWR|O_LARGEFILE) = 3
ioctl(3, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0xa, 0x8), 0x7eef0f84) = 0
ioctl(3, _IOC(_IOC_NONE, 0xc4, 0x10, 0), 0x8) = 0
ioctl(3, _IOC(_IOC_NONE, 0xc4, 0, 0), 0) = 0
mmap2(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7643a000
mprotect(0x7643b000, 8388608, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0x76c39f98, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x76c3a4c8, tls=0x76c3a920, child_tidptr=0x76c3a4c8) = 507
ioctl(3, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x2, 0x1c), 0x7eef0f04) = 0
ioctl(3, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0x9d009) = 0
ioctl(3, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x2, 0x1c), 0x7eef0ea4) = 0
ioctl(3, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x2, 0x1c), 0x7eef0ea4) = 0
mmap2(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x75aff000
mprotect(0x75b00000, 8388608, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0x762fef98, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x762ff4c8, tls=0x762ff920, child_tidptr=0x762ff4c8) = 508
ioctl(3, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0x9e00a) = 0
ioctl(3, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0x9f00b) = 0
ioctl(3, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x2, 0x1c), 0x7eef0ec4) = 0
ioctl(3, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x2, 0x1c), 0x7eef0ec4) = 0
ioctl(3, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xa000c) = 0
ioctl(3, _IOC(_IOC_NONE, 0xc4, 0xd, 0), 0xa100d) = 0
mmap2(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x752fe000
mprotect(0x752ff000, 8388608, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0x75afdf98, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x75afe4c8, tls=0x75afe920, child_tidptr=0x75afe4c8) = 509
ioctl(3, _IOC(_IOC_NONE, 0xc4, 0xc, 0), 0xa000c) = 0
ioctl(3, _IOC(_IOC_WRITE, 0xc4, 0x4, 0xc), 0x7eef0ed4) = 0
ioctl(3, _IOC(_IOC_READ|_IOC_WRITE, 0xc4, 0x8, 0x10), 0x7eef0e88) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x76dc58a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, FUTEX_BITSET_MATCH_ANY

@Jassky, many thanks for the Dockerfiles, your investigation and for reporting this issue in the first place! Indeed I was able to reproduce the hanging on an RPi 3 even without the camera… And in doing so and asking the team, I have found that balena’s engineers were already working on a fix for this issue, just earlier today.

What I have gathered is that the newer base images (stretch and buster) include a newer version of raspistill that uses certain RPi firmware features that require updates in balenaOS (RPi Board Support Package). balena’s engineers are working on a new balenaOS release that includes the required changes, and we will update this forum thread when it is available – expected in the next few days, as tests are currently being carried out. Meanwhile, the only alternative I am aware of is to use the older Jessie images, as you had already found.

1 Like

@pdcastro and @dansku thanks for the fast and thorough responses. Unfortunately, we’re using certain packages that require Buster so I’ll be keeping a very close eye out for any updates. Thanks.

Hi,

in the meanwhile, can you try this Debian Buster workaround? It should fix your issue for now.

RUN apt-get update && apt-get install libraspberrypi-bin=1.20180328-1~nokernel1 libraspberrypi0=1.20180328-1~nokernel1 --allow-downgrades -y

There’s an issue for this problem where you can follow the progress: https://github.com/balena-os/balena-raspberrypi/issues/361

Once this problem will be fixed, we will ping you here as well.

Does the workaround work for you?

Thanks!

RUN apt-get update && apt-get install libraspberrypi-bin=1.20180328-1~nokernel1 libraspberrypi0=1.20180328-1~nokernel1 --allow-downgrades -y

@zrzka Thanks! Looks like it works.

Here’s the Dockerfile that’s working for me. I’ll do some more tests today and let you know if I find any issues.

FROM balenalib/raspberrypi3-node:8
RUN apt-get update \
	&& apt-get install \
	libraspberrypi-bin=1.20180328-1~nokernel1 \
	libraspberrypi0=1.20180328-1~nokernel1 \
	--allow-downgrades -y
CMD modprobe bcm2835-v4l2 && raspistill -o test.jpg

@Jassky I don’t know if you saw it already but my colleague @imrehg’s branch here works too (this will be merged shortly): https://github.com/balena-io-projects/balena-rpi-nodejs-picamera/tree/updates

1 Like

@zrzka Thanks! it works

Happy to hear it! Tell us if you need anything else

This doesn’t appear to be working for me. Tried exactly the above and got --allowdowngrades is not understood. Removed that switch and got libraspberrypi-bin not found. Trying to JUST apt-get libraspberrypi-bin now and it SEEMS to be working, but not sure if the above is needed too.

Yep…still getting camera is not enabled after just apt-getting libraspberrypi-bin. Any help would be appreciated.

Hi @MydKnight,I recreated your issue and have now updated the project https://github.com/balena-io-projects/balena-rpi-python-picamera which I assume you started from. With this update on a pi3 B+ with gpu_mem=128 and RESIN_HOST_CONFIG_start_x=1 set, the camera works correctly. Can you give it a try?