-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Add thunderbolt / USB-C display + dock compatibility #934
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Conversation
|
It seems very specific to some installations, maybe the setup should be moved on demand in the setup menu (like the fingerprint scanner). |
|
Debatable yes, i think as Beelink, modern Displays and AMD GPU are not only official hardware recommendation but also probably one of the most common setups its worth considering to pull it in the standard. Up to the maintainer imho |
|
I regularly use my FW 13 in clamshell mode hooked up to a Caldigit TS4 dock and external display, and have quite a few issues... for example, needing to slightly open the lid after suspending in order to get things going again, and issues with things like GDK_SCALE needing to change depending on which display is in use. I'm relatively new to Arch/Omarchy, but I'm happy to help test this and provide anything I can here, especially since 95% of my computer use is clamshell mode 😀 |
|
Oh great! Can you currently use keyboard and display connected to the dock on boot to unlock the drive? |
|
@chriopter nope, I need to boot unplugged. Also, not sure if this is more of a Framework thing, but only one of the USB-C ports - the right one (both on the two rear ports) can do display + keyboard + eth + audio. The other just does display. |
|
@brennandunn Can you apply the both migration patches of the PR to your machine and try if you can boot plugged in with the port that works? I think it's expected that not all ports have the same feature set but unsure if this matches your systems behaviour. |
|
I have FW13 AMD 7040 laptop with Caldigit TS4. These are my experiences. I have my extension cards setup like the picture before so the top right and left are USB-C ones, these support USB4 and my caldigit is connected to either of these, depending on the situation. Because of the AMD platform, the boot screen/bios is not available to external screen through the caldigit. But my external keyboard (also connected to the TS4) works in the LUKS prompt. I need to install the |
|
Thanks, i have an FW13 under way as well to test. Bolt would work to replace our udev authorization in userspace, but unfortunately we would still need the initramfs hooks I think. Could you apply the patch without udev scripts to test if you can get a picture at LUKS? |
|
Very keen to see this fixed by default. But we need to be careful about just giving free access to all potential TB devices, I think. Wonder if there's a way to scope this down somewhat. Also needs some serious testing to make sure we don't screw over other things. But love to see this move forward! |
yeah port 3 works fine with the dock, port 1 only works with the display. It's strange... based on what I've read, the two rear ports (1 and 3) should function identically. Not a big deal, though. |
|
Pre-boot Thunderbolt limiting is tricky i think since docks expose very different functions etc. |
|
That sounds like a good plan. What do you think @kevinmcconnell? |
I think that sounds good too 👍 Trusting the devices connected at boot time seems reasonable, and it solves the chicken & egg problem of being able to boot up to a working display that hasn't yet been enrolled. After that point, we can require explicit authorization/enrolment with bolt. I'm happy to help test this too, btw, as I have a 3 different machines (all AMD) that should be able to work with my Studio Display over USB-C given these changes. |
|
Great, i will draft this when my FW13 is here next week |
|
@chriopter I have a framework 13 with hx370, with an old elgato dock. Screen works from scratch but I had to allow the dock with bolt for the keyboard and mouse attached to it to work. When I suspend, keyboard and mouse never work, I have to use the laptop/s keyboard to wake up and enter my password (screen is ok). Once I'm logged, I unplug / replug and everything works as expected. I ran you script without the udev rule as you said earlier, but it gives me no change. |
|
@bastnic Thanks! The sleep behaviour might be dock related, at least i cant reproduce it via FW13 and Studio Display. Can you test this with another OS / machine and similiar sleep state? Will get an update to the PR ready in the next minutes. |
|
Updated PR:
In my testing, on a FW 13 the full chain works without manual action; boot and userspace full KBM via Studio Display. When booting the FW13 with the lid opened, the plymouth omarchy theme fails to display correctly centered while other themes work fine. It might be related to the included script of the theme. I tinkered a little bit but failed to grab the issue, maybe @dhh can take a look? For the sake of easier debugging & testing, i removed the migration scripts for now and laid the scripts flat in subfolders. They still can be run to apply it live inside the repo for those who want to test: |
|
Excellent work, @chriopter! We'll get this checked out. We have a bunch of Framework 13 users at 37signals who use it with an external display 😄 |
| bash-completion \ | ||
| bat \ | ||
| blueberry \ | ||
| bolt \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where is this actually used?
Can you re-enable the monitors disabled by the ghost fix and post hyprctl monitors? The script currently disables the monitors with less modes assuming its the ghost one. It works flawlessly for me, but i also have a Studio Display not the XDR |
|
This might be related to this PR: #1405 |


This hopefully makes the extra USB-C to display port cable unnecessary.
In my use case (BER8 + Thunderbolt display with connected KM) direct connection as well as a TB switch now work flawlessly on boot and in userspace.
Possible Improvements:
We may need to include the ghost display fix script in the udev hot plugging rule, but this runs in a different user context without access to the hyprland session. If someone has a clever idea to this, it would be appreciated. The best i have is to expand the udev rule, get all hyprland session and run the ghost fix on each / broadcast.
https://gist.github.com/chriopter/82871f6b9f1cabb63655e540bab28e2b