I have had a lot of trouble getting my Frame.Work 12 laptop working with Arch Linux and the CalDigit TS4 dock, so I thought it might be helpful to others for me to post the solutions I’ve come up with here.
Many of these solutions came from other posts, both in these forums and other sites. I take no credit for any of it – I’m just a monkey that did trial and error until I got it to work. I apologize that I can’t credit the actual smart people here, and I also apologize that I probably can’t help you with your own questions (but feel free to ask, you never know)…
So what problems did I have, exactly?
- Initially, nothing on the dock worked except I think some of the USB ports and the charger
- Eventually I got DisplayPort working but not Ethernet by updating the firmware (see below)
- Then I got Ethernet working, but it was ignoring my wifi card even after unplugging the dock
- Finally I got everything working
- Trackpad wasn’t tapping to click
- TPM module reporting interrupt not working (still unsolved)
This is super important for getting displayport working.
pacman -S fwupd fwupdmgr get-updates fwupdmgr update
There’s a complex proceedure on the 'net if you look up how to update firmware on the dock under linux – no need for that anymore, fwupdmgr can do it now.
The problem with the dock boils down to more PCIe devices than the system can handle in default configuration. In arch, go to:
In there, you will find a .conf file (mine is named
2023-03-31_18-02-15_linux.conf). Edit it, find the options line (it’s the line that starts with the word ‘options’), and add this to it:
Breaking down what this does…
pci= means PCI parameters
assign-buses tells the kernel to override the firmware bus number assignments to do the orchestration rather than making a free for all
bpbussize has something to do with bus number reservations, I don’t really understand this one.
realloc tells the kernel to reallocate resources allocated by BIOS if they are too small – this one is very important in our case
hpmemsize sets aside memory for the hot plug bridge memory window. This has to be 512M – if it is less (say, 256M which is something else I tried) some of the devices won’t work (in my case the memory card)
nvme.noacpi some folks report this increases battery life when the laptop is suspended, your mileage may vary here, I just threw it on there to try it.
Once you edit that file, I copy it to /root just in case something ever overwrites it (I’m new to arch and I’m not sure how or if it will ever get updated) then run:
For some reason, I can’t find this setting in xfce4 anywhere … I could have sworn I’ve seen it before, maybe I’m missing a package. Here’s how you can make it work, though.
Install the xorg-xinput package:
sudo pacman -S xorg-xinput
xinput list to find your track pad name. Mine was “PIXA3854:00 093A:0274 Touchpad”.
Create a file
Put this in it, replacing my touchpad name with yours:
Section "InputClass" Identifier "PIXA3854:00 093A:0274 Touchpad" MatchIsTouchpad "on" Driver "libinput" Option "Tapping" "on" Option "libinput Tapping Enabled" "1" EndSection
Log out / log back in or reboot and it should work, along with two finger scrolling and two/three finger tapping for right click/middle click.
Note that if you screw this file up, your system will appear to hang on boot and you’ll need to ALT-F2 over to a command prompt to fix it. Ask me how I know
I get this TPM error message on boot:
[ 1.468118] tpm tpm0: [Firmware Bug]: TPM interrupt not working, polling instead
I don’t yet have an answer for this one, it’s my quest for tomorrow. But as of right now, my system seems pretty minimally janky so I am happy. I just wanted to share these tidbits all in one place.
Thanks for everyone that’s posted info on how to get stuff working