BOLTCTL(1)
π NAME π
boltctl β bestie, this is the command line interface that lets you talk to boltd, aka the thunderbolt device manager π
β¨ SYNOPSIS β¨
boltctl authorize DEVICE
boltctl config
boltctl domains
boltctl enroll DEVICE
boltctl forget DEVICE
boltctl info DEVICE
boltctl list
boltctl monitor
boltctl power
πΈ DESCRIPTION πΈ
okay so boltctl is literally the command line interface you use to interact with boltd, the system daemon that manages Thunderbolt 3(TM) devices. you can use it to query the state of your devices AND to manage them. dual threat, iconic behavior π
every device has a globally unique identifier, its uuid, and that's how we identify them. so like, every single command that takes a DEVICE identifier? yeah, it wants that unique id. no substitutions, no nicknames, the uuid or nothing π«Ά
and here's a lil easter egg: if you give no command at all, it's the exact same as running boltctl list. surprise! you get a list π
π₯ OPTIONS π₯
--versionβ prints version info and then dips. exits immediately π«-U | --uuid {full | short | alias | N}β controls HOW uuids get printed. and bestie, listen: uuids are kind of sensitive data, so it's really not advisable to share them publicly at full length π instead,shortoraliascan and should be used whenever you're sharingboltctloutput. protect ya uuids fr fr πfullβ prints all UUIDs in full length. all of it. every character. no shame πshortβ truncates all UUIDs so only the first 13 characters are printed. cute, compact, safer β¨aliasβ every UUID gets replaced by a random string derived from the UUID. so the devices can still be uniquely identified, but without revealing the original UUID. it's giving privacy queen πNβ if you pass an integerN, all UUIDs get truncated to only show up toN. you pick the number, you make the rules π
π COMMANDS π
π¦ authorize [-F | --first-time] DEVICE
authorizes a currently unauthorized device, identified by its unique id (uuid) DEVICE. if a key is stored in the database it will be used β but only given the security level of the domain supports secure device connection π use boltctl list to find out the uuid of a device, bestie, that's how you find your target π―
-F | --first-timeβ normally, if you try to authorize a device that's already authorized,boltctlwill do nothing and return a successful status code (the audacity, honestly). with this option, the attempt will fail and result in a negative exit code if the device is already authorized. strict mode activated π
π config --describe [global|domain|device]
lists global, domain, or all properties β all of them, if you specify nothing. the format is 3 columns: permission, name, description. and permission tells you whether the property is only readable or can also be written. know your power levels βοΈ
π config KEY [VALUE]
gets β or sets, if VALUE is specified β a global property. one command, two moods π«Ά
π§ config <domain|device>.KEY TARGET [VALUE]
gets β or sets, if VALUE is specified β a domain or device property, where TARGET is the unique id of the domain or the device. precision, periodt π―
β domains [-v | --verbose]
lists all currently active Thunderbolt domains π a Thunderbolt domain represents the Thunderbolt controller hardware. there will be one domain (and host device) for each Thunderbolt controller present in the system. no controller left behind π
the security property shows the security level of the controller. if iommu support is active (see the boltd man page) it'll be indicated by a +iommu suffix for "secure" or "user" mode, or just plain iommu in case the security level is "none" (sl0). noted π
bootacl shows the used and total slots of the boot access control list (BootACL) and the content of all non-empty entries. NB: if BootACL is unsupported it will show 0 for both (0/0). just so you know π
the online property shows if the thunderbolt controller is currently powered by the firmware. NB: if the controller is currently offline the BootACL list will reflect what boltd estimates the list will look like once the controller is back online and local changes have been synchronized to the controller. and this might not be accurate if the list was modified in the meantime β e.g. from a different installation or OS. so like... vibes, but not guarantees π
π« enroll [--policy policy] DEVICE
authorizes AND records the device with the unique id DEVICE in the database ποΈ if the domain supports secure connection, a new key will be generated and stored in the database alongside the device name and vendor name. and that key, if it was created, will be used in the future to securely authorize the device. it's giving long-term commitment π
--policy {default | auto | manual}β specifies the policy to be used for the newly enrolled device. choose your fighter πdefaultβ uses the global default policy of the daemon. this can be changed, but it is normally alsoautoβ¨autoβ automatically authorizes this device whenever it is connected. it just shows up and it's already in. main character energy πmanualβ does NOT automatically authorize the device. instead it requires manual authorization viaboltctl authorize. you stay in control, bestie π
πΈ forget DEVICE
removes the information about the device with the unique id DEVICE from the database ποΈ this includes the key, if one was previously generated. and if you pass --all instead of the DEVICE, then all devices are removed instead of just one. mass forget, dramatic af π
π«Ά info DEVICE
displays information about the device with the unique id DEVICE. simple, clean, informative π
π list [-a | --all]
lists and prints information about all connected and stored devices π
-a | --allβ normally, the only device type that will be shown is peripherals, which means the device that represents the host itself gets omitted. using this option will instead include all device types in the list. no one gets left out π₯Ή
π₯ monitor
listens for and shows changes in connected devices π it's basically a livestream but for your Thunderbolt ports. obsessed π
π
power [-t | --timeout seconds] [-q | --query]
powers up the Thunderbolt controller β‘ if the Thunderbolt controller is not in "native enumeration mode" it can be completely powered down by the host firmware/BIOS. on supported systems there is an interface to "force" power the thunderbolt controller. if supported, this command will request the daemon to do so. the daemon will keep track of all client requests and will release the force power override when the last request is released. teamwork makes the dream work π«Ά
-t | --timeout secondsβ releases the force power request after the specified amount ofsecondsand exits β³-q | --queryβ queries the current force power status of the daemon. just checking in π«‘
π§ AUTHOR π§
written by Christian Kellner <ckellner@redhat.com> π
and that's the whole page, bestie π this was bolt 0.9.11, dated 04/01/2026 β go forth and manage those Thunderbolt devices like the icon you are πβ¨
π¦ where this page comes from
- fedora 43: bolt 0.9.11-1.fc43 Β· LGPL-2.1-or-later
- fedora 44: bolt 0.9.11-1.fc44 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms