อะไรเป็นสาเหตุของข้อผิดพลาด ENOSPC เมื่อใช้โมดูลกล้อง Raspberry Pi


33

ฉันได้รับข้อความแสดงข้อผิดพลาดด้านล่างเมื่อพยายามใช้กล้อง Raspberry Pi

# raspistill -o /tmp/gate_now.jpg
mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
mmal: camera component couldn't be enabled
mmal: main: Failed to create camera component
mmal: Failed to run camera app. Please check for firmware updates

ในการค้นคว้าสิ่งนี้มีเหตุผลหลายประการที่สามารถนำไปสู่ข้อความ ENOSPC ฉันคิดว่าฉันจะสร้างคำถามที่นี่เพื่อทำแคตตาล็อกสาเหตุที่เป็นไปได้


คุณใช้เซ็นเซอร์วัดอุณหภูมิด้วยหรือไม่? ฉันพบปัญหานี้ทุกครั้งที่ฉันรันคำสั่ง modprobe เมื่อตั้งค่าเซ็นเซอร์อุณหภูมิ ดูgithub.com/raspberrypi/linux/issues/435
Anconia

รับปัญหานี้เช่นกันในภาพ OctoPi: github.com/guysoft/OctoPi/issues/31
GuySoft

มันเป็นปี 2019 และไม่สามารถโพสต์คำตอบใหม่ (ปิด) แต่ฉันได้ติดตั้ง raspimjpeg ก่อนหน้านี้ซึ่งฉันโชคดีพอที่จะใช้ 'ps -ef' "sudo pkill raspimjpeg" จากนั้นแก้ไขปัญหา
Gavin Simpson

คำตอบ:


19

หน้าโครงการ GitHub สำหรับซอฟต์แวร์กล้องกล่าว

ข้อผิดพลาด: ENOSPC แสดงขึ้น กล้องอาจจะมีหน่วยความจำ GPU ไม่เพียงพอ ตรวจสอบ config.txt ใน / boot / โฟลเดอร์ ตัวเลือก gpu_mem ควรมีอย่างน้อย 128

ปัญหานี้ระบุว่าข้อผิดพลาดนี้สามารถเกิดขึ้นได้เนื่องจากความขัดแย้งกับไดรเวอร์สำหรับโมดูล 1-Wire (W1) หากโมดูลไม่ได้โหลดตามลำดับที่ถูกต้อง

โพสต์ในฟอรัม RPi นี้บอกว่าสามารถแก้ไขปัญหาได้โดยการสลับพินที่ใช้สำหรับ 1-Wire เป็นพิน 18:

/boot/cmdline.txt:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait bcm2708.w1_gpio_pin=18

ตั้งแต่เดือนพฤษภาคมปี 2016 GPU_MEM = 128 นั้นไม่เพียงพออีกต่อไป การเพิ่มจาก 128 เป็น 144 ทำให้ข้อผิดพลาดหายไป


ฉันคิดว่าคุณหมายถึง gpu_mem ไม่ใช่ gpio_mem
tedder42

14

ฉันใช้การเคลื่อนไหวบน pi ถ้าฉันต้องการเรียกใช้ raspistill ฉันต้องหยุดการเคลื่อนไหว (ซึ่งยังใช้กล้องเพื่อตรวจจับการเคลื่อนไหว)

pi@raspberrypi ~ $ sudo /etc/init.d/motion stop
[ ok ] Stopping motion detection daemon: motion.
pi@raspberrypi ~ $ /usr/bin/raspistill -o cam2.jpg
pi@raspberrypi ~ $ sudo /etc/init.d/motion start
[ ok ] Starting motion detection daemon: motion.

แม้ว่านี่อาจเป็นคำตอบ แต่ก็ต้องได้รับการปรับปรุงให้ดีขึ้นด้วยความประณีตบางอย่าง
Bex

ไม่ใช่การเคลื่อนไหวที่ฉันใช้ แต่ฉันมีดีมอนอีกตัวที่ใช้กล้องและเมื่อฉันหยุดฉันก็หยุดรับข้อผิดพลาด
Richard Wiseman

ใช่กล้องดูเหมือนว่าสามารถควบคุมได้ด้วยกระบวนการเดียวเท่านั้น
schemacs

10

"ในสถานการณ์ปกติไม่จำเป็นที่จะต้องเรียกใช้ rpi-update เพราะมันจะพาคุณไปที่เฟิร์มแวร์และเคอร์เนลชั้นนำเสมอและเพราะนั่นอาจจะเป็นเวอร์ชั่นทดสอบ https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 แม้แต่เอกสารrpi-updateตอนนี้เตือน "แม้ใน Raspbian คุณควรใช้สิ่งนี้ด้วยเหตุผลที่ดีนี่จะทำให้คุณตกเลือดล่าสุด เคอร์เนล / เฟิร์ม."

ผมมีปัญหาเหมือนกัน. การอัพเดตเฟิร์มแวร์แก้ไขได้

sudo rpi-update

สิ่งนี้แก้ไขได้สำหรับฉันและดูเหมือนว่าจำเป็นที่จะทำให้ Raspicam 2.1 ทำงานได้สำหรับฉัน (ฉันใช้ Rapicam 1.3 ก่อนการอัพเดทสำเร็จ); อัปเดตอัปเกรดฉันจาก4.1.7-v7+เป็น4.9.25-v7+เป็นซึ่งทำให้โมเดลรุ่นใหม่ทำงาน เปลี่ยนจากGPIO_MEM=128ไปGPIO_MEM=144ก็ไม่จำเป็นสำหรับฉันในกรณีนี้
nh2

9

ผมมีปัญหาเหมือนกัน. เมื่อเปรียบเทียบกับโพสต์อื่น ๆ จำนวนมากคำตอบที่เป็นไปได้มากที่สุดคือกระบวนการ / แอปพลิเคชั่นสองตัวพยายามเข้าถึง PiCam ในเวลาเดียวกัน สามารถเป็นสตรีมมิ่ง ffmpeg, เคลื่อนไหว, raspivid, raspistill ฯลฯ

ฉัน $ 0.02


จริง :)) เสียเวลาบางส่วนฉันลืมว่าฉันติดตั้งกระบวนการเคลื่อนไหวเป็นแบ็กเอนด์ป้องกันการเข้าถึงกล้อง
ดังนั้นสนาม

2
หรือ octoprint (เพราะมันเป็นอะไรสำหรับฉัน)
สราญ

ฉันพยายามเรียกใช้ทั้งสคริปต์ raspivid และ python ที่ใช้ไลบรารี่ของ picamera พวกเขาไม่สามารถทำงานร่วมกัน
Dante

ขอบคุณมากฉันก็ทำผิดพลาดเหมือนกัน แต่การโพสต์อื่น ๆ ที่ช่วยให้ฉันเพื่ออัปเดตเฟิร์มของฉันแพคเกจอ ฯลฯ sudo service motion stopปัญหายังคงมีจนกว่าฉันจะทำอย่างนี้ และกล้องก็เริ่มทำงานอีกครั้ง
Amit Ray

เพียงแค่เสนอสถานการณ์และแนวทางแก้ไขของฉันเช่นกัน ฉันนำเข้าpicameraสคริปต์ไพ ธ อน แต่มันไม่ทำงานฉันจึงตัดสินใจใช้raspistillจากการเรียกบรรทัดคำสั่งภายในสคริปต์แทน ฉันไม่ได้ลบออกimport picameraซึ่งเป็นการใช้ทรัพยากรของกล้องก่อนที่ฉันจะสามารถใช้กับมันraspistillได้
Kimberly W

6

ฉันเพิ่งพบปัญหาเดียวกันกับข้อผิดพลาด ENOSPEC ในกรณีของฉันทุกสิ่งทำงานได้อย่างสมบูรณ์แบบจนกว่าฉันจะนำกล้องไปไว้ในที่อยู่อาศัยของ PiCam ฉันพบที่อยู่อาศัยนี้ (แม้ว่าจะออกแบบมาเพื่อ PiCamera) ผลักชิปเพียงเท่าที่ตัวเชื่อมต่อระหว่างลูกเบี้ยวกับบอร์ดหลุดออกมา การผลักดันมันกลับเข้าที่ช่วยแก้ปัญหาของฉันได้ อาจไม่ใช่เรื่องง่ายที่จะตรวจสอบว่าคอนเนคเตอร์อยู่ในตำแหน่งที่เหมาะสมซึ่งทำให้เกิดการตีความผิดพลาดหรือไม่

ฉันเดาว่านี่จะไม่ใช่กรณีปกติ แต่อย่างที่โพสต์แรกแนะนำว่าควรปรับปรุง cataloge ของสาเหตุที่เป็นไปได้ของข้อผิดพลาดนี้


2

ผมมีข้อผิดพลาดเดียวกันเพราะผมไม่ได้อัปเดตเฟิร์ม (ผ่านsudo rpi-update) หลังจากraspi-configการเปิดใช้งานกล้องผ่านทาง ฉันอัปเดตเฟิร์มแวร์ไปแล้วสองสามวันก่อนและฉันคิดว่ามันจะพอเพียง แต่เนื่องจากกล้องไม่ได้เปิดใช้งานในตอนนั้นมันก็ไม่ได้ช่วยอะไร


2

ในกรณีของฉันมันเป็นเพียงที่ฉันไม่ได้รีบูตเครื่องหลังจากติดกล้อง


ไม่ต้องต่อกล้องเข้ากับ pi ในขณะที่เปิดเครื่อง!
Dmitry Grigoryev

1

ฉันได้ลองกับ RASPBIAN STRETCH LITE (9.4 - 2018-06-27) ครั้งล่าสุดใน PI3B v1.2 ด้วย PI CAMERA 2.1 ทั้งหมดได้รับการอัปเกรดอย่างเต็มที่ (อัปเกรดแล้ว)

หากคำสั่งนี้ตรวจไม่พบกล้องที่มี "detect = 1 " เช่นนี้:

pi@raspberrypi:~ $ vcgencmd get_camera
supported=1 detected=1

จากนั้นมีปัญหาการเชื่อมต่อ ตรวจสอบว่าสายเคเบิลทั้งสองด้านอยู่ในตำแหน่งที่ดีกับหมุด (และแน่นอนว่าเชื่อมต่อกับบัส "กล้อง" ไม่ใช่บัส "จอแสดงผล" ที่มีขนาดเท่ากัน)

(แน่นอนหลังจากเปิดใช้งานอินเตอร์เฟสกล้องด้วย raspi-config และรีบูตเครื่อง)

หากไม่ได้ผลมักเป็นปัญหาฮาร์ดแวร์ของกล้องและตัวเลือกที่รวดเร็วคือเปลี่ยนกล้องใหม่

หากตรวจพบ = 1แต่เมื่อพยายามใช้ raspistill แสดงข้อความนี้:

pi@raspberrypi:~ $ raspistill -o test.jpg
mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
mmal: camera component couldn't be enabled
mmal: main: Failed to create camera component
mmal: Failed to run camera app. Please check for firmware updates

จากนั้นการเชื่อมต่อก็โอเค แต่ปัญหาที่แน่นอนคือปัญหาเกี่ยวกับฮาร์ดแวร์ของกล้องและคุณต้องเปลี่ยนกล้องใหม่ อย่าเสียเวลาพยายามแก้ปัญหาเพราะมันเป็นกล้องที่เสีย หากคุณได้รับใหม่มันจะทำงาน


ถึงอย่างนั้นคุณก็บอกว่ากล้องไม่ทำงาน ฉันมีปัญหาเหล่านี้ทั้งหมดและเมื่อฉันทำการสตรีมสดโดยใช้ http: // {my ip}: 8081 /? action = stream มันใช้งานได้ ซึ่งหมายความว่า raspimjpeg กำลังทำงานอยู่ สิ่งนี้อาจเกิดขึ้นได้มากที่สุดเมื่อคุณมีกระบวนการอย่างน้อยหนึ่งกระบวนการที่ใช้กล้องอยู่แล้วเนื่องจาก detect = 1 หมายความว่าอย่างน้อยก็สามารถติดต่อกับกล้องได้
Amit Ray

0

ในกรณีของฉันฉันต้องใช้ modprobe เพื่อยกเลิกการโหลดไดรเวอร์: sudo modprobe -r bcm2835-v4l2

จากนั้นไฟ LED สีแดงบนกล้องปิดอยู่และฉันสามารถใช้ raspivid เพื่อเปิดใช้งานกล้องอีกครั้ง


0

ในกรณีของฉันฉันต้องติดตั้งสายเคเบิลใหม่บนกล้อง ฉันตัดการเชื่อมต่อเพื่อป้อนสายผ่านเคส มันจะต้องไม่ได้ทำการเชื่อมต่อที่ดี


0

ฉันพบข้อผิดพลาดใน AIY Vision Kit (Pi Zero W) ของฉันเพราะฉันลืมที่จะหยุดแอพตัวอย่างกล้อง:

sudo systemctl stop joy_detection_demo

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.