I’m just the author of the thread; all credit for this tip should go to @SteveC
I had this set up automatically for me when I was using Qubes with KDE and SDDM. There was a “Virtual Keyboard” button in the bottom left corner on login screen. I don’t have it when I use XFCE , but according to the screenshots from their documentation XFCE should have this ability too, although I was not able to quickly find it (no need it myself right now).
To answer my own question I did some testing on this device. There are 6 controllers but it’s not as useful as that sounds.
1 - USB 2.0 Hub, not mapped to any port
2 - USB 2.0 Hub, not mapped to any port
3 - Top Left port
4 - Top Right Port
5 - Keyboard, Mediatek Wireless Device, Fingerprint Reader, Bottom 4 ports
6 - USB Camera
I don’t know what the first two controllers are for maybe the GPU module?
The fifth controller shares the keyboard and internet bluetooth so probably not acceptable for anyone that cares about isolating this. The camera is more isolated than the keyboard. You can maybe share some less important ports with the keyboard (chargers are maybe less likely to be a problem) but if you want ethernet that takes up 1 of the two other isolated ports you have because there is no dedicated ethernet pci port.
There are 3 controllers you can isolate ports with in total.
A framework 13 would at least be better because the keyboard and mouse is PS/2 Framework - Laptop 13 (Intel 13th Gen) - #6 by leee
But maybe a NovaCustom is better for isolation? NovaCustom NV41 Series - #19 by novacustom
It seems to have isolated keyboard/mouse, internet and audio with up to 3 isolated groups of USB ports?
Mainboard circuit diagram is here Framework-Laptop-16/Mainboard at main · FrameworkComputer/Framework-Laptop-16 · GitHub but my testing shows that JUSB5 and the Input Module is connected to the USB 3.1 Gen2 Hub even though it’s not drawn connected. Not sure why that is.
Thanks for the HCL! I’ve been playing around with Qubes for the first time after (finally!) receiving my 16 and I’ve been kind of stuck on the audio portion, which you mention works fine for you. I haven’t been able to get it to work by following this guide.
- Which audio devices did you pass through to the sys-audio vm? I tried selecting both “audio” devices in the list, but when I started the qube I just an error message that the PCI device could not be reset. When I also added the multimedia controller, the system crashed whenever the app vm was started.
- How did you manage to pass through the bluetooth mediatek device? Currently, this device is attached to the sys-net qube. Or is it not possible to use bluetooth (for audio, via sys-audio) and wifi (via sys-net) at the same time?
Sorry if any of these questions are obviously “incorrect” / don’t make sense - first time Qubes user, as I said ![]()
Do you have sys-net-usb qube that has both Network and USB controllers attached to it instead of having separate sys-net and sys-usb?
Bluetooth controller should be connected to USB based on info in this topic so you should be able to connect it from your sys-usb/sys-net-usb to your sys-audio using Qubes Devices widget:
Managed to get it working as expected with the links provided, thanks ![]()
I have a split sys-net and sys-usb setup, but the passthrough of the mediatek device worked as expected.
I’m now suddenly hitting some other issues with sys-usb and the USB keyboard, but I don’t think that belongs in this thread ![]()
I know this is an old thread, but I figured I’d ask here as it is framework 16 specific. Has anyone who has the dgpu managed to get GPU passthrough working on their framework 16? I have not managed to get it to succeed. Windows does not recognize the GPU when it is attached, and Linux struggles to output. The closest I have got is attaching it to a Ubuntu hvm created from the iso. That Ubuntu gives output when it is booting, but as soon as it has booted, nothing. If anyone has got it working, it would be great to know what you did.
I just got my Framework 16 a week ago, so far the main issues I’ve encountered are the sys-usb issues mentioned in this thread, and working on GPU pass-through for the RX 7700S.has anyone had any luck at this point solving either issue?
Still no luck for me regarding gpu passthrough, xen 4.18 has improvements regarding amd gpu passthrough so I am waiting until qubes 4.3 which will be on xen 4.19 to try again. For the sys-usb disconnecting the keyboard, I used the cron job mentioned earlier to have sys-usb restart after a minute if it is not on. I have not found anything better yet.
Okay, I’ll implement the cron job then for now, are there any notable downsides to having it check more often?
I’ll keep trying to get GPU pass-through working, were you trying to use a Linux guest or Windows?
Has anyone else actually put the thermal pads in as recommended by the LTT review? I didn’t expect it to make the keyboard feel so much better, completely worth the $17 for thermal pads.
I’ve been setting up Qubes on my Framework 16 this weekend (more or less the same machine specs), and I’ve got a lot working thanks to this HCL. I’m new here, should I create a new HCL thread for myself?
I was having a lot of trouble getting accustomed to Qubes, so I decided to install i3wm to make things extra hard on myself ![]()
I’m very happy with the result now that I pretty much have all the important stuff configured, I customized i3 and wrote a script to launch the default browser of whatever VM belongs to the currently-focused window in case anyone is interested.
The wake after sleep issue is the only major problem I’m having, so hopefully that cronjob I just configured does the trick. Has anyone figured out a more permanent fix?
I tried with both Linux and windows, closest I got was when output was displayed during the boot of a Ubuntu hvm from iso but only while it was booting/shutting down, not when the desktop had loaded. If I recall, that thermal pad thing from ltt was to fix keyboard flex, and I believe framework added a keyboard deflection kit in later batches
if i run cat /sys/power/mem_sleep I get s2idle. I thought that means that deep sleep is not supported. Correct me if I am wrong.
EDIT:
just tested it. with deep sleep I get failed to start qubes-core.service on boot.
changed it to s2idle. Keyboard not working after closing the lid. But the error is gone. (not sure if it worked before tho did not test it).
related discussion about wrong mem_sleep causing qubes-core.service to error Qubes-core Service failed to start - #2 by apparatus
I am not expert on that much. I wonder that does it work with QubesOS v4.2.4?
It works fine for me. There aren’t any major changes from earlier 4.2.x versions that would break compatibility.
Edit: spelling
I am about 90% of the way there with my Qubes setup on a Framework 16. Shout out to individuals on this thread and others to help me navigate the set up and small hurdles.
Last thing on my list is GPU passthrough. I want to pass the Ryzen 7040 through to a blackarch qube for password cracking in CTFs. Has anyone attempted GPU passthrough with this laptop? I tried once using the devices menu in the settings but that crashed the machine (dom0 using 7040 as its GPU?). I believe this CPU also has built-in graphics. If no one has done it directly what should be the approach to solving this?
I have successfully got gpu passthrough working, but only on a qube using wayland. I have not done much digging into why, but for some reason, x refuses to recognize that it can be a display output.
The basic steps are as described in the crearing a gaming qube community guide: hide the gpu and its audio device from dom0 on grub. It should be dom0:03_00.0 and dom0:03_00.1 use qvm-pci to pass through the device to your qube. You’ll probably want to use the persistent option.
With wayland, you can just plug in a display and be good to go, x never wants to start a display on that output, so thay will require more debugging. You also might have luck with virtualgl, but I havent tried so I don’t know how well thay will work.
I followed this guy’s guide: GitHub - david-cant-code/Framework-16-QubesOS-Gaming-GPU-Passthrough-Guide: A step by step guide to pass the 7700s GPU module on a Framework 16 laptop through to create a gaming HVM qube in QubesOS for hiding the discrete GPU from dom0. It worked. I cloned a debian template and loaded it with amdgpu drivers and hashcat. I am able to pass the GPU into an appqube (HVM) based on the template. I need to be able to move files and use the qubes copy/paste api with this qube so I figure I need to avoid the create an HVM from iso if I can. I also tried passing the devices into a standalone blackarch qube. In all instances, lspci can see the device but no drivers (amdgpu opencl) can see the GPU. The drivers can see the CPU with its extra graphics capabilities. The closest I got was on my appqube based on that debian template, in my dmesg I get an error code -22 with amdgpu. I don’t see much out there about others getting amd drivers to work with qubes in general. There is plenty about nvidia but not amd. If someone here is interested in this problem and they know of no existing guide I can provide a reply with all details and reproduce my steps.
I have only got the dpgu working under wayland, not x11. And when I cloned a template to use, I needed to disable the qubes gui agent, use a kernel provided by the qube, and install a desktop environment that supports wayland.
For fun I also tried a fedora xfce iso, and it also did not work.
I’ve also noticed a problem with kernel >= 6.17 on debian and fedora where the process pv_native_safe_halt is using ~99% of the cpu. This is not present on earlier kernels and I have not had a chance to try 6.18 yet.