Pixel Slate Linux (Debian) Camera driver?

Running native Debian Trixie (6.11 kernel) on both a Pixelbook and Pixel Slate. Everything is working great on the Pixelbook, it’s very sweet. The camera shows up as a USB device on xHCI Host Controller 1, with a /dev/video0 entry. Zoom works great with it.

On the Slate, tho - no camera on the USB controllers; not on PCI that I can tell, and no /dev/video entry. Clearly not a simple/standard interface.

And yeah, I see the CoolStar Windows driver support isn’t there either, and all the web searches for native Linux show it as not working - so it must be hard. But they are older posts, so I thought I’d ask here one more time. I’m comfortable pulling blobs out of CrOS recovery images etc - but my deep kernel video driver config magic is weak. I’ve got everything else working on the system - would be great to be able to conference on it as well. Any thoughts?

the Slate doesn’t use USB attached cameras, they are connected via i2c and to the IPU. I don’t believe there is any Linux support currently

Ah, wondered about that. Thanks for clarifying and the quick reply. I’ll keep poking for personal education, but I can also just get a supported USB camera to meet the need :slight_smile: And thank you so much for all your work for the Ultrabook community!

Just popping in here, as a friend may be giving me one of those soon. Nothing special regarding getting Debian working on the Pixel Slate? I intended to try some Debian-based distros on there if the friend hands it over soon.

If you want to go pure native UEFI Debian then of course you have to do the Mr. Chromebox scripts, and that needs a SuzyQable cable which can be hard to find nowadays (or you can make one yourself). If you want to legacy dual-boot it’s supposed to be easier, but I haven’t personally done that.

Then I just booted the Debian Trixie live ISO, and installed as usual. It basically runs fine. I might have had to run the WeirdTreeThing audio script for the Slate to get audio right. Everything else (but the camera, of course) worked first-time as I recall, even backlighting on the keyboard cover. I also tried Manjaro, but had some funky system stability issues that I didn’t bother debugging - just moved to Debian.

FWIW, I have a slate and I run ChromeOS, because I like things working. YMMV

Of course you are absolutely correct if one needs the machine for real work. But where’s the fun in that? :slight_smile:

FWIW, thanks to your hint on IPU/i2c I got the raw camera HW devices to show up by pulling out the Slate kernel modules file out of the recovery image, then building a custom Debian kernel with CONFIG_VIDEO_IPU3_CIO2 plus the i2c drivers for the sensors. It found /dev/video[0-3], and v4l2-ctl could talk to them, give their info. But no application could recognize an actual camera to use. Plugged in a cheap USB-C webcam and works like a champ. So, off to tilt at the next windmill…

IIRC, the ACPI interfaces for the cameras on the Slate and HP x2 are currently disabled in firmware since they cause the camera LED to be on all the time under Windows. So you may want to re-enable those and rebuild the firmware

Ah… So my firmware is 2408.1 (9/14), and if I read git right that has the disabled camera.asl for the Slate. Sigh, and I just nuked my custom kernel and went back to stock…

So, you’re saying if I wanted I could:

  • follow the “compiling your own firmware” section on mrchromebox.tech,
  • remove the comments from src/mainboard/google/poppy/variants/nocturne/include/variant/acpi/camera.asl;
  • ./build-uefi.sh nocturne
  • flash the image per “manually flashing firmware” (or can the FW script do a local image?)
  • Cross fingers and reboot
  • Run custom kernel with IPU3 and the sensor drivers and see if there’s a camera

Wow. Part of me wants to just because, part of me is terrified :slight_smile:

better to revert commit HACK: Nocturne disable camera ACPI for Windows as there are 4 files to uncomment

script can’t do a custom image at this time, so just follow the docs for flashing a custom one

I wanted to follow-up on this and get some closure after spending way too many hours in a maze of twisty little passages. Maybe some of this will help someone who’s motivated in the future…

TL;DR is that of course MrChromebox and others are right, the Slate camera needs to be supported by some proprietary CrOS modules and app-level Linux support isn’t currently there (at least that I could find). Although it maybe could be there if someone wanted to write some code, some pointers that may help are below. But given the age of the Slate, and likely small number in the wild, just buy a cheap USB-C webcam if you want to conf on it.

More detail: Once I recompiled the coreboot FW to enable the Slate Camera per MrChromebox above, and then built a custom Debian Trixie kernel to include the ipu3 modules and imx3xx camera sensor drivers, everything was great at the v4l2 and media-ctl level. Using cheese showed 4 cameras available, all named “ipu3_imgu”; but they had all the resolutions listed. All gave “Error playing video from webcam” no matter what rez, tho. media-ctl --print-topology gave this lovely graph:

So, yeah. Turns out that there is (was?) a specific CrOS camera platform living in user space to handle all that HW complexity and deliver images to Chrome and the Android container. Which also may explain why you can’t access the device camera in Crostini, I suppose. You can see the ChromiumOS doc for the camera stack here, where there is an arch diagram showing the components and a bunch of details on how to write a new one. And the Intel doc for the IPU3 driver is here.

IPU3 is old, and now IPU6 MIPI cameras are the current architecture. My first problem was that Trixie didn’t even include the IPU3 drivers in the kernel as modules - so if Debian is moving away, it must be getting old. (Manjaro includes them as of today, so YMMV. But Manjaro was a mess from a stability standpoint, and wouldn’t boot with the Slate kbd cover attached.) I tried libcamera, which has IPU3 support; it found the sensors but couldn’t make them work (tons of warnings and errors). I suppose someone could dive into their source and maybe try to mod it for the ChromeOS HAL design - but won’t be me.

So, just gonna use a USB webcam and enjoy the rest of the hardware working correctly :slight_smile: