Raspberry Pi Camera Module 3 released
raspberrypi.com
raspberrypi.com
The most important upgrade is the inclusion of autofocus (using PDAF) with full support from libcamera and Picamera2. It is pretty snappy though not quite as good as something like a Pixel or iPhone.
There's also a new M12-mount HQ camera, for the same price of $50, which is useful for some more specialty lenses (though I haven't run into any M12 lenses in my own work!).
So ridiculous these sensors and data lanes on everything embedded can't get us 240FPS at even VGA resolution.
This article been on the HN frontpage at least twice: "A Guide to Recording 660FPS Video On A $6 Raspberry Pi Camera" - https://blog.robertelder.org/recording-660-fps-on-raspberry-...
- Aug 6, 2019 | 103 comments | https://news.ycombinator.com/item?id=20627574
- Dec 27, 2021 | 64 comments | https://news.ycombinator.com/item?id=29703293
Obviously, the resolution is really low (640x64) but for the price, the quality seems quite nice.
In order to enable higher framerates you need to set up additional "modes" in some configuration file. I assume that by default only "relatively reliable modes" are configured. That's where the limitation to 120 FPS comes from. Calculating other modes requires some special tool that is specific to the camera chip. Also you need some luck that those modes actually work for you.
The V1 camera module (OV5647) only supported two lanes, so it was a fair enough decision then, but they had a chance to change it when they changed connector on the PiZero.
The connector even had the 4 extra pins specifically to support 4 lane CSI, but it was as if it was forgotten about. The V2 camera came out not long after so the combination would have made for a massive upgrade.
I think they ended up back peddling from the new connector due to the horrific combination of a too thin custom flat flex cable with a connector that could barely meet its 10 mating cycle rating.
It didn’t have to be that way, a standard 0.5mm FFC with decent swing down latch connector is 10x more robust.
Edit: Raspberry Pi compute module 4 has all 4 CSI-2 data lanes exposed. So you can get full bandwidth of this interface and could use high resolution sensors.
The new sensor is IMX708 and probably not supported yet.
Looking at https://github.com/raspberrypi/raspiraw/blob/master/imx477_m... it's not immediately obvious where to get the all the values from.
Fiddling with "struct mode_def imx477_modes[]" when you already have the rest of the header file would be the obvious thing to do and would probably work out fine but that is mostly trial-and-error and not a proper method.
The limiting factor is how long it takes to shift a row of pixels out of the CCD and into the ADC - wide-but-short videos can be recorded at 200+ fps pretty easily.
I believe it should be much easier now.
It’s not /great/, but given the supply chaos of the last few years it is what it is.
I looked into making one during the pandemic - but i think lack of auto-focus was one of the things that caused me to rule it out at the time…
Maybe people have a different setup that I, but I usually remain the same distance away from my monitor at most times.
I'm guessing you mean "shallow depth of field" rather than "sharp" here.
And you probably don't want it to be so shallow so a few centimeters would matter, then your nose could be in focus but your ears not, or vice-versa. That's a bit too shallow.
It also doesn't require auto-focus, it requires you to be able to put the camera at a good distance with the correct f-stop, or being able to change the f-stop one way or another.
Auto-focus is more for cases when the subject/object moves a lot forward/backward from the perspective of the camera, so you don't have to manually adjust things.
I doubt a small sensor auto-focus camera will achieve that though.
Webcams in poor lighting conditions benefit from autofocus, because autofocus makes it easier to use a larger aperture, improving low light performance.
Laptop webcams benefit from autofocus because there's no room for manual focus controls, and the distance to the user will vary substantially depending on if the laptop's in a docking station, if the user's leaning in to read some small text, etc.
Meeting room webcams benefit from autofocus so you don't need a technician to attend every time it gets knocked out of focus.
PC webcams sometimes benefit from autofocus, because the cable usually weighs more than the camera, meaning the camera often gets moved and knocked about. Plus about 95% of home users with manual focus webcams don't even know they need to focus them.
Streamers have great lighting and cameras firmly mounted on solid tripods - but they're often using mirrorless interchangeable-lens cameras, so they get autofocus for free anyway.
Back then you needed a Pi Zero for USB device mode and a specific software version for this to be supported other than that it just worked.
But before getting a better camera I'd try to improve lighting, try to have lots of uniform white diffused light coming from at or behind the camera; simple things like white LED strips at the back of the monitor bounced off a wall or other surface behind it can work well because Teams/Zoom will compress and shrink your video to death anyway, so high resolution and fine detail are wasted, but a kinda well-lit person will still look decent even in a tiny and brutally compressed thumbnail on a laptop screen and I'm not aware of any AI filter that actually does a good job at simulating that, and any that did probably wouldn't fit on a Raspberry Pi anyway.
And before doing even that, I'd make sure my audio is actually decent, since that's what most people take for granted since it is for granted in real-life meetings, but being hard to understand or sounding harsh and jarring is something people react to a lot more strongly and viscerally to than bad-ish video, often without even realizing that's what bothers them about a person. Think of it like meeting to get work done in a dimly-lit room vs. in the middle of a construction site – people sometimes do the former on purpose, e.g. to improve projector image quality, but the latter will feel jarring to most, especially if you're the only person who sounds like that. Important to use the test call functionality in Zoom/Teams/... since their compression may reduce quality by a lot. External USB microphones can be a good inexpensive option, something like a Behringer C-1U, anything bluetooth tends to sound rather ugly.
And before doing even that, I'd think real hard if even that's actually needed. Most people seem to not give a damn and are just fine not sounding and looking like a newsperson. There might be more profitable things to put that time and money towards.
Exaggeration. I can walk to a shop 20 minutes away and buy them off the shelf for RRP.
I could get it off Amazon but it's $260 USD.
Stock is set to improve this year anyway so don't sell your kidney quite yet.
Not much, but better than when there were only like a dozen per week. And Eben Upton says it should improve and not be an issue by the second half of this year.
I sure hope that's the case, because it feels like it's been 2 years since I could just buy one at Micro Center, and the other SBC boards I've been testing are either too unsupported/unpopular or quite expensive as well.
How can we assess a ~12MP camera based on examining images from it that are all inexplicably reduced to 0.3MP?
I'd say the sensor is very good but the lenses they're using aren't capable of a full 12 MP of resolution. The wide angle lens controls distortion pretty well, but the standard lens shows a little distortion around the sides.
Still a huge improvement over the Camera Module v2 in every aspect. Autofocus worked especially well, even better than the ArduCam models I tested last year.
Love your channel. Watched your last video on this - neat project.
Do you have any advice on getting 240FPS out of these modules?
https://www.raspberrypi.com/app/uploads/2023/01/ely2_no_hdr-...
https://www.raspberrypi.com/app/uploads/2023/01/ely2_wide_no...
https://www.raspberrypi.com/app/uploads/2023/01/underexposed...
https://www.raspberrypi.com/app/uploads/2023/01/overexposed....
RPi's modules are priced reasonably enough to compete against clones from China's vendor, really hard to do, but it did it so far like a magic.
third party cameras using _same sensor_ are $5 compared to official $25
I realize it would be $1500 but I'd buy it in a heartbeat, there is SO much I could do with a hacker-friendly DSLR-quality sensor.
What are other great combos that exist out there?
Edit edit: I still have no idea...see reply from 'mrbteveman below.
Old first edit (wrong): Apparently, yes. This comment[0](2019) explains it slightly more. Evidently the ribbon cable ("CSI interface") can be used by pretty much anything...as long as that thing is not a camera / doesn't need the usual on-board image processing.
Evidently this prevents anyone from coming out with pi-compatible cameras with different features, e.g. different resolutions/framerates/night vision/infrared/zoom/etc.
it also makes it more challenging (unintentionally?) when trying to use the camera on other OSs like Ubuntu core.
> Apparently, yes. This comment[0](2019) explains it slightly more. Evidently the ribbon cable ("CSI interface") can be used by pretty much anything...as long as that thing is not a camera / doesn't need the usual on-board image processing.
This isn't accurate, the only thing they do is limit specific sensors from being used unless there is a matching authentication chip on the module, because those specific sensors are the ones they have manufactured camera modules with.
So for example the Pi Camera v2 module uses an imx219 sensor from sony and an authentication chip that the Pi firmware can check to verify the module was actually made by the Raspberry Pi company.
If you buy a 3rd party imx219 camera module (which would not have that authentication chip), it will not work on the regular Pi boards (but it will work with the Pi compute module boards because they don't do the authentication chip verification).
There have been plenty of 3rd party camera modules with entirely different sensors that work on the Pi for years, though with quirks related to the closed source drivers, but the modern libcamera stack on the Pi is explicitly designed to enable 3rd party camera modules.
It's really disappointing. I have wondered if there are any very-high-quality cameras you can connect to a Pi, but found none. I guess this is why.
I have a Pi 4, but don't remember if it's USB 2 or 3.
Is there some legitimate, user-serving benefit to this move that isn't apparent?
this benefits the user by nature of the stack existing.
on the other hand now that an ecosystem has sprung up around this it's arguable that the DRM scheme is only needed to bootstrap the community
How is the pi foundation supposed to make money in order to continue manufacturing and designing computers if they are unable to make any money? donations?
I just want a really high-quality (even if "only HD") camera, which would cost much more than what the Pi Foundation is targeting. I don't think it would cannibalize sales from anything they're trying to put out.
The Arduino ecosystem seems to have survived being truly open, hasn't it?
It seems Raspberry Foundation didn't like the old driver any more than we did.
That was because the previous camera was widely copied and they wanted to not put money into making driver for a camera just for user to go and buy cheap copy
A variety of cases either provide access to the connector, or have a camera mount. You can find them by searching.
https://www.vision-components.com/
their support wasn't exceptional in the past but kinda improved recently.
the modular camera module ecosystem is quite interesting, using this for research.
Down side is it just released, so the software support is still in its infancy. And it doesn't have wifi+bt built in, so you need to use a dongle or use up the NVME slot for adding that functionality.
Various kernel-devs on ActivityPub had some very very nasty things to say about rk3588 board stability. Different folk, on different boards. Maybe this time will be better, who knows, and maybe better drivers will improve things, but seeing such sad kernel devs has been demoralizing.
For some use cases they're great though, as long as you don't need specific features.
I did use a beefy usb-c power brick, rated for 40 watts to ensure it's never getting less power than it asks for.
So far I'd say it's at least as stable as my RPi, and doesn't have anything ugly like storage or network connected via USB.
As a router or small server for running DNS, PiHole, and related services I'd recommend one of the Rk3588 systems, I bought a NanoPi R6S. The 8gb flavor is $120, $140 with a nice metal case. It's pretty fast, I compared compiling rust and it was 6-7 times faster than a RPi4 8GB. Even has two 2.5gbe interfaces.
However progress has been made, various reports of it working, some progress, some accepted patches, some rejected. More info at:
https://forum.radxa.com/t/any-progress-with-mainline-linux-k...
Also: https://lore.kernel.org/linux-arm-kernel/5bec43fe-ff81-bc68-...
I'm wondering if it was a real Sandisk.
Since I got about 10 at the same time it sucks: I'd have to individually test them before entrusting any of these with any data.
I do have a RasPi in use that runs some heavier software like a Hue bridge emulator written in Python (diyHue), and for some of my projects I now have that Pi do more intensive computation centrally and then just dispatch results to esp32s.
I'm currently building one of those refresh-once-a-day framed e-ink "newspaper on the wall" projects. In the picture frame I just have the panel, an IT8951 display controller and an esp32, all running off a LiPo pouch, mostly in deep sleep. The RSS scraping and pdflatex+ghostscript pipeline to produce the image is running on the central Pi in this.
A single Pi may be all you need if your projects live on a network!
If it's "on the wall", why isn't it powered by an ac adapter?
Time will tell, but I'm hoping for at least a couple of months on a 1100 mAh. Napkin calculations had me at 6-7 months.
It's e-ink, so I can shut down the entire display and controller after the refresh, and the ESP32 is in deep sleep until it wakes up on timer and performs a network fetch and display update, then back to sleep.
> If it's "on the wall", why isn't it powered by an ac adapter?
Effort :-) It's a picture frame on a wall, I don't want to have an externally visible cable going into it and burying a cable in the wall is more work than all the rest of it.
In practice this is unattainable, because batteries are not ideal, and there's quite some efficiency loss from e.g. voltage regulators. But you can realistically get to years of hibernation.
Of course the power draw is much higher if you e.g. need to permanently keep a WiFi connection open and can't sleep (there's lower-power alternatives to WiFi like ESP-NOW for some applications), but I just need a connection for a very short time to fetch a 1600x1200x4 image. And to power a full display refresh on the e-ink panel.
If you think about it, a Kindle or similar also runs for days to weeks off a single charge, and that has a lot more interaction and computation going on during use, a more powerful processor with higher power draw and it sleeps less deeply and for shorter time. My application is suitable to extend beyond that by a large factor.
Plans to get another, as some redundancy would be good and it strains transcoding video, but you can pile a surprising amount onto one.
13.3", the largest I could afford :-)
But I actually only watched the first 30 seconds and then got hooked on the idea. The impl is mine :-)
The less hurdles in the prototyping phase the better. I know it sounds impossible, but this wiring this to that always gets on my nerves.
So a software wiring kinda thing with a "wireless" approach would be very much welcomed.
Each 100mm x 100mm board was $~10 a piece, assembled and delivered to the US (the cost mostly consisting of my specific parts.)
It's pretty cheap, low effort to prototype a real PCB.
Once you get things in place making a PCB that connects modules neatly really isn't a big deal, especially if you use ready-made modules