February, 2024.
I purchased an HP Sceptre x360 16′ laptop with 3840×2400 UHD+ display. I got this because it was affordable and had about the highest resolution display unless there is some exotic and unaffordable 8K laptop out there. I am mostly doing 2D web graphics development.
For some reason this laptop came with the display disabled in BIOS, and at first presented a disappointing black screen when turned on. I think it was Fn-F12 that finally turned on the lights, or it might have been holding down the power button for long enough for the machine to clear the BIOS parameters. Perhaps this is why Best Buy offered an $800 “open-box” discount on what was obviously not an opened box. Once it booted into Windows and ran it initial software update, it immediately went into an HP BIOS updater and reflashed the BIOS.
Debian 12 installed and ran.
The processor is a 13th Gen Intel(R) Core(TM) i7-1360P. This is a hybrid CPU, the cores all run the same instruction set but they aren’t all the same. There are 4 P (for performance) cores which have hyperthreading and run at high frequency. Because of hyperthreading, they each appear as 2 CPUs to Linux, but the CPU is only running one of the 2 threads at any time. Hyperthreading reduces the overhead of multiprocessing when there are more processes to run than there are CPUs. Without hyperthreading, switching processes would otherwise require flushing caches and reloading the registers and the virtual memory system. There are 8 E (for efficient) cores which run at lower frequency and are power efficient. The E-cores don’t support hyperthreading and each appears to Linux as 1 CPU. The Intel Thread Director hardware reports statistics on these processors to the Linux scheduler, which can then schedule them as appropriate. You can manually choose which are used with the taskset command.
There are several issues with this laptop because Intel has not yet properly supported its own hardware on Linux.
The keyboard can be folded back and the laptop used like a huge, heavy tablet. Gnome/Wayland recognize when the display has been turned on its side, but don’t recognize when it’s right-side up again! You’re stuck. I’ve not yet found what is missing and where.
The Xe graphics work well enough to stream movies and run WebGL. There is also a discrete ARC 370 graphics controller which is listed as a PCI device, but I’m not at all clear if it’s being used. A driver is available for Ubuntu (because some Dell laptops are certified to run Ubuntu) and may not yet be upstreamed. I will investigate further.
The Intel IPU6 integrated camera is an incredible dumpster fire. I’m not kidding. It’s an integrated 5MP camera. Sounds simple. doesn’t that? All of those use UVC and work with existing drivers, right? Well, not this one. In order to save a few dollars at most, this is a non-UVC camera, and a lot of what would be in embedded firmware on a UVC camera has to run in user-mode libraries. Sounds bad, right? It gets worse.
There is a repository full of proprietary Intel firmware and image processing libraries for the camera, even though there could be no business-differentiating value in a 5MP integrated camera design which would justify making it proprietary at this late date, and camera image-processing, including autofocus, is well-known art and available today for other cameras as Open Source.
There are four large Intel git repositories in total required for the camera drivers, one of which has the main branch empty, just to give you a hard time, and you have to figure out the branch to check out and then figure out all of the dependencies to build this stuff. This is at least an hour’s work. Another manufacturer might have listed all of the dependencies, put everything in one place, and made it work by just typing “make install”. What Intel has done is make it work only where they were obligated to do so. Which is Ubuntu and Windows. Everyone else might be able to figure it out from that. This isn’t good community member Intel that I’m used to.
Once you get all of that working, it is not so simple as just loading a driver. The camera needs a user-mode pipeline to do its processing. That connects to a Video4Linux loop device so that the camera can interface with existing software as if it were actually a kernel device. It depends on V4l-relay, which doesn’t appear to be in Debian so I’ll have to find that. You can configure udev to start this pipeline, but it doesn’t appear that Intel actually documented how to do so.
After you do that, there is some additional configuration necessary so that the browser can see your device, which Intel has not documented. Some folks figured it out for other Linux distributions, and it looks non-trivial, with a lot of files modified.
In the interim, I bought a UVC camera on Amazon which I will hang on the back of the display, until some other poor soul in the Open Source world works this out entirely. Which Intel really should be doing with paid staff for more than just Ubuntu.