Atlas (Pixelbook Go) camera support on Linux

Hi,

I’m not sure how big a task I’m taking on but I’m motivated to make the Atlas (Pixelbook Go) integrated web camera to work on Linux.

I don’t have much experience with Linux drivers and video input sadly. What gives me hope is that ChromeOS is Linux and thus the functionality can be transferred onto other Linux distros as well.

I have a device and it seems the hardware consists of a Sony IMX 208 sensor attached to Intel IPU3 where both seem to have drivers in the mainline Linux kernel?

I have been playing around with V4L2 on ChromeOS and reading some docs on IPU3 but overall I am hoping that by asking here I can get ideas on what I should learn overall and what in particular is missing or not working on Atlas so I can focus my efforts (or you can destroy my dreams if you assume it’s not a simple matter of patching and configuration).

So far it seems libcamera will do the job but needs configuration for my camera sensor. I am working with libcamera people to add support for my camera model which should make it all work out of the box. Fingers crossed!

Managed to get my camera working through libcamera. Some aspects are not ideal, it seems we need to set the black level and gain and we cannot easily do that without the datasheet for the sensor.

Either way, this was the only thing that was missing for the camera to work. In a future release of libcamera, laptops using a supported image processor + Sony IMX 208 should work. I may update on here once a release happens

For those who might be interested in how to get Zoom to work using the libcamera support for the Pixelbook Go camera, here is what I did:

  1. Build libcamera from source with the patch from petarlishov. Make sure to add all the dependencies for gstreamer.
  2. Test gstreamer following the instructions in the README.
  3. Create a virtual video device:
sudo modprobe v4l2loopback video_nr="42" 'card_label=virtcam'
  1. Set up the gstreamer pipeline:
gst-launch-1.0 libcamerasrc ! videoconvert ! v4l2sink device=/dev/video42

  1. Run Zoom. Zoom should automatically discover the video.

Thanks! Which distro do you run, or does this run on? I’ll be installing linux on my Pixelbook Go this week, and I’m still on the fence which distro I’ll install. Edging towards Pop!_OS as I’m accustomed to Debian/Ubuntu.