Pi2Z, PiHQ Cam --> ERROR [349.260 stream] -- Can't grab device buffer: Resource temporarily unavailable
Im having some issues getting ustreamer working with a Pi2Zero. Ive found that I can't make it work at all without libcamerify, but that does work. It just keeps dropping out for some reason.
Start command I'm running:
libcamerify ustreamer --host :: --encoder=m2m-image
Here is the command line output:
libcamerify ustreamer --host :: --encoder=m2m-image
-- INFO [342.632 main] -- Starting PiKVM uStreamer 5.48 ...
-- INFO [342.632 main] -- Using internal blank placeholder
-- INFO [342.633 main] -- Listening HTTP on [::]:8080
-- INFO [342.634 stream] -- Using V4L2 device: /dev/video0
-- INFO [342.634 stream] -- Using desired FPS: 0
================================================================================
-- INFO [342.641 http] -- Starting HTTP eventloop ...
[0:05:42.645318948] [1330] INFO Camera camera_manager.cpp:297 libcamera v0.0.5+83-bde9b04f
[0:05:42.708810673] [1332] INFO RPI vc4.cpp:437 Registered camera /base/soc/i2c0mux/i2c@1/imx477@1a to Unicam device /dev/media3 and ISP device /dev/media1
-- INFO [342.710 stream] -- Device fd=8 opened
-- INFO [342.710 stream] -- Using capture type: single-planar
-- INFO [342.710 stream] -- Using input channel: 0
[0:05:42.711760556] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:42.712609526] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [342.716 stream] -- Using resolution: 640x480
-- INFO [342.716 stream] -- Using format: YUYV
-- INFO [342.716 stream] -- Querying HW FPS changing is not supported
-- INFO [342.716 stream] -- Using IO method: MMAP
[0:05:42.717475163] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:42.718407155] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [342.726 stream] -- Requested 5 device buffers, got 5
-- INFO [343.258 stream] -- Capturing started
-- INFO [343.258 stream] -- JPEG-0: Initializing encoder ...
-- INFO [343.258 stream] -- JPEG-1: Initializing encoder ...
-- INFO [343.258 stream] -- JPEG-2: Initializing encoder ...
-- INFO [343.258 stream] -- JPEG-3: Initializing encoder ...
-- INFO [343.258 stream] -- Using JPEG quality: 80%
-- INFO [343.258 stream] -- Creating pool JPEG with 4 workers ...
-- INFO [343.259 stream] -- Capturing ...
-- INFO [343.528 jw-0] -- JPEG-0: Configuring encoder: DMA=0 ...
-- INFO [348.049 http] -- HTTP: NEW client (now=1): [::ffff:100.86.145.118]:35182, id=726199c70c68b766
-- ERROR [349.260 stream] -- Can't grab device buffer: Resource temporarily unavailable
-- INFO [349.261 stream] -- Destroying workers pool JPEG ...
-- INFO [349.272 stream] -- Capturing stopped
-- INFO [349.273 stream] -- Device fd=8 closed
-- INFO [349.273 stream] -- Changed video frame to BLANK
================================================================================
-- INFO [349.274 stream] -- Device fd=8 opened
-- INFO [349.275 stream] -- Using capture type: single-planar
-- INFO [349.275 stream] -- Using input channel: 0
[0:05:49.275722040] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:49.276792886] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [349.279 stream] -- Using resolution: 640x480
-- INFO [349.279 stream] -- Using format: YUYV
-- INFO [349.279 stream] -- Querying HW FPS changing is not supported
-- INFO [349.280 stream] -- Using IO method: MMAP
[0:05:49.280487355] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:49.282119770] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [349.288 stream] -- Requested 5 device buffers, got 5
-- INFO [349.820 stream] -- Capturing started
-- INFO [349.820 stream] -- Using JPEG quality: 80%
-- INFO [349.820 stream] -- Creating pool JPEG with 4 workers ...
-- INFO [349.821 stream] -- Capturing ...
[0:05:49.856603308] [1330] ERROR V4L2Compat v4l2_camera_proxy.cpp:680 Failed to clear eventfd POLLIN
[0:05:49.856732372] [1330] ERROR Request request.cpp:472 FrameBuffer already set for stream
[0:05:49.856795394] [1330] ERROR V4L2Compat v4l2_camera.cpp:259 Can't set buffer for request
-- ERROR [349.857 stream] -- Can't release device buffer=1 (broken frame): Cannot allocate memory
-- INFO [349.857 stream] -- Destroying workers pool JPEG ...
-- INFO [349.872 stream] -- Capturing stopped
-- INFO [349.878 stream] -- Device fd=8 closed
================================================================================
-- INFO [349.880 stream] -- Device fd=8 opened
-- INFO [349.880 stream] -- Using capture type: single-planar
-- INFO [349.880 stream] -- Using input channel: 0
[0:05:49.881702337] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:49.884114968] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [349.888 stream] -- Using resolution: 640x480
-- INFO [349.888 stream] -- Using format: YUYV
-- INFO [349.888 stream] -- Querying HW FPS changing is not supported
-- INFO [349.888 stream] -- Using IO method: MMAP
[0:05:49.889209556] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:49.891272652] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [349.900 stream] -- Requested 5 device buffers, got 5
-- INFO [350.439 stream] -- Capturing started
-- INFO [350.439 stream] -- Using JPEG quality: 80%
-- INFO [350.439 stream] -- Creating pool JPEG with 4 workers ...
-- INFO [350.439 stream] -- Capturing ...
-- ERROR [351.610 stream] -- Can't grab device buffer: Resource temporarily unavailable
-- INFO [351.610 stream] -- Destroying workers pool JPEG ...
-- INFO [351.622 stream] -- Capturing stopped
-- INFO [351.624 stream] -- Device fd=8 closed
-- INFO [351.624 stream] -- Changed video frame to BLANK
================================================================================
-- INFO [351.633 stream] -- Device fd=8 opened
-- INFO [351.634 stream] -- Using capture type: single-planar
-- INFO [351.635 stream] -- Using input channel: 0
[0:05:51.636789262] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:51.637963910] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [351.639 stream] -- Using resolution: 640x480
-- INFO [351.640 stream] -- Using format: YUYV
-- INFO [351.640 stream] -- Querying HW FPS changing is not supported
-- INFO [351.640 stream] -- Using IO method: MMAP
[0:05:51.641159934] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:51.642342134] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [351.649 stream] -- Requested 5 device buffers, got 5
-- INFO [352.194 stream] -- Capturing started
-- INFO [352.195 stream] -- Using JPEG quality: 80%
-- INFO [352.195 stream] -- Creating pool JPEG with 4 workers ...
-- INFO [352.197 stream] -- Capturing ...
[0:05:52.230749960] [1330] ERROR V4L2Compat v4l2_camera_proxy.cpp:680 Failed to clear eventfd POLLIN
[0:05:52.230877930] [1330] ERROR Request request.cpp:472 FrameBuffer already set for stream
[0:05:52.230941368] [1330] ERROR V4L2Compat v4l2_camera.cpp:259 Can't set buffer for request
-- ERROR [352.231 stream] -- Can't release device buffer=1 (broken frame): Cannot allocate memory
-- INFO [352.231 stream] -- Destroying workers pool JPEG ...
-- INFO [352.246 stream] -- Capturing stopped
-- INFO [352.253 stream] -- Device fd=8 closed
================================================================================
-- INFO [352.255 stream] -- Device fd=8 opened
-- INFO [352.255 stream] -- Using capture type: single-planar
-- INFO [352.255 stream] -- Using input channel: 0
[0:05:52.256662265] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:52.259407554] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [352.262 stream] -- Using resolution: 640x480
-- INFO [352.263 stream] -- Using format: YUYV
-- INFO [352.263 stream] -- Querying HW FPS changing is not supported
-- INFO [352.263 stream] -- Using IO method: MMAP
[0:05:52.263610984] [1330] INFO Camera camera.cpp:1033 configuring streams: (0) 640x480-YUYV
[0:05:52.264863497] [1332] INFO RPI vc4.cpp:565 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
-- INFO [352.274 stream] -- Requested 5 device buffers, got 5
-- INFO [352.912 stream] -- Capturing started
-- INFO [352.912 stream] -- Using JPEG quality: 80%
-- INFO [352.912 stream] -- Creating pool JPEG with 4 workers ...
-- INFO [352.913 stream] -- Capturing ...
^C-- INFO [353.656 main] -- ===== Stopping by SIGINT =====
-- INFO [353.656 http] -- HTTP eventloop stopped
-- INFO [353.656 stream] -- Destroying workers pool JPEG ...
-- INFO [353.668 stream] -- Capturing stopped
-- INFO [353.670 stream] -- Device fd=8 closed
-- INFO [353.671 main] -- JPEG-0: Destroying encoder ...
-- INFO [353.680 main] -- JPEG-1: Destroying encoder ...
-- INFO [353.680 main] -- JPEG-2: Destroying encoder ...
-- INFO [353.680 main] -- JPEG-3: Destroying encoder ...
-- INFO [353.680 main] -- Bye-bye
Any thoughts? Seems like the module is working fine. I tried upping the GPU memory to 128 but it still happens.
Thanks.
Bryan
As far as I can tell, this is a problem on the libcamerify side. For some reason, it can't grab frames from your camera. Please contact Raspberry on their forum regarding libcamera, I think they have a better understanding of how this thing works.