#110 (Toumas) - I no longer experience this problem when running 20.10 with the latest kernel and the latest Dell firmware update (fwupdmgr works reasonably well, but you can also just download the firmware file from Dell, put it on a USB dok and the preboot screen lets you apply it directly - no MS-Windows needed).
That being said, when I had the most serious problems, the small script attached below would take care of things semi-automatically or automatically (follow step 4 in the header doc for completely automated recovery - when the dock crashes, wait a few seconds and it'll auto recover).
#!/bin/bash
### Installation Instructions:
# 1. Install file into `/usr/local/bin/reset-tb`
#
# 2. Optional: allow password less sudo by creating a file `/etc/sudoers.d/allow-reset-tb` with the following content:
# ----8<-----
# <your username> ALL = NOPASSWD: /usr/local/bin/reset-tb
# ----8<-----
#
# 3. Optional: allow easy access from the menu by creating a file `$HOME/.local/share/applications/Reset Thunderbolt.desktop` with the following content:
# ----8<-----
# [Desktop Entry]
# Exec=bash -c 'sudo -S /usr/local/bin/reset-tb'
# Icon=amarok_playlist_refresh
# Name=Reset Thunderbolt
# NoDisplay=false
# StartupNotify=false
# ----8<-----
#
# 4. Optional: run a service to automatically trigger the reset and send you an email when "unknown event type 15" error is detected, by setting your email
# in this file below, then creating a file `/etc/systemd/system/auto-reset-tb.service` with the following content:
# ----8<-----
# [Unit]
# Description=Automatically reset XHCI USB bus when detecting a Thunderbolt dock error
# [Service]
# ExecStart=/usr/local/bin/reset-tb -l
# [Install]
# WantedBy=multi-user.target
# ----8<-----
# Then run:
# ```
# sudo systemctl daemon-reload
# sudo systemctl enable auto-reset-tb
# sudo systemctl start auto-reset-tb
# ```
<email address hidden>
SUBJECT="Detected Thunderbolt error in your system"
MESSAGE="
Check the logs, please.
"
function do_reset() {
tbtid="$(ls /sys/bus/pci/drivers/xhci_hcd/ | grep '[0-9]' | tail -n1)"
echo "Resetting thunderbolt bus">&2
for id in $tbtid; do echo -n $id > /sys/bus/pci/drivers/xhci_hcd/unbind
done
sleep 1
for id in $tbtid; do echo -n $id > /sys/bus/pci/drivers/xhci_hcd/bind
done
echo "Done resetting thunderbolt bus" >&2
}
function listen_for_reset() {
dmesg -w | while read line; do
[[ "$line" =~ "xHCI host controller not responding, assume dead" ]] || continue
( sleep 15 # let the busses settle do_reset sleep 90 # don't reset too much
)& mail -s "$SUBJECT" $EMAIL <<< "$MESSAGE Date: $(date -R)"
done
}
#110 (Toumas) - I no longer experience this problem when running 20.10 with the latest kernel and the latest Dell firmware update (fwupdmgr works reasonably well, but you can also just download the firmware file from Dell, put it on a USB dok and the preboot screen lets you apply it directly - no MS-Windows needed).
That being said, when I had the most serious problems, the small script attached below would take care of things semi-automatically or automatically (follow step 4 in the header doc for completely automated recovery - when the dock crashes, wait a few seconds and it'll auto recover).
#!/bin/bash
### Installation Instructions: bin/reset- tb` d/allow- reset-tb` with the following content: bin/reset- tb .local/ share/applicati ons/Reset Thunderbolt. desktop` with the following content: bin/reset- tb' playlist_ refresh system/ auto-reset- tb.service` with the following content: Automatically reset XHCI USB bus when detecting a Thunderbolt dock error /usr/local/ bin/reset- tb -l multi-user. target
# 1. Install file into `/usr/local/
#
# 2. Optional: allow password less sudo by creating a file `/etc/sudoers.
# ----8<-----
# <your username> ALL = NOPASSWD: /usr/local/
# ----8<-----
#
# 3. Optional: allow easy access from the menu by creating a file `$HOME/
# ----8<-----
# [Desktop Entry]
# Exec=bash -c 'sudo -S /usr/local/
# Icon=amarok_
# Name=Reset Thunderbolt
# NoDisplay=false
# StartupNotify=false
# ----8<-----
#
# 4. Optional: run a service to automatically trigger the reset and send you an email when "unknown event type 15" error is detected, by setting your email
# in this file below, then creating a file `/etc/systemd/
# ----8<-----
# [Unit]
# Description=
# [Service]
# ExecStart=
# [Install]
# WantedBy=
# ----8<-----
# Then run:
# ```
# sudo systemctl daemon-reload
# sudo systemctl enable auto-reset-tb
# sudo systemctl start auto-reset-tb
# ```
<email address hidden>
SUBJECT="Detected Thunderbolt error in your system"
MESSAGE="
Check the logs, please.
"
function do_reset() { pci/drivers/ xhci_hcd/ | grep '[0-9]' | tail -n1)"
echo -n $id > /sys/bus/ pci/drivers/ xhci_hcd/ unbind
echo -n $id > /sys/bus/ pci/drivers/ xhci_hcd/ bind
tbtid="$(ls /sys/bus/
echo "Resetting thunderbolt bus">&2
for id in $tbtid; do
done
sleep 1
for id in $tbtid; do
done
echo "Done resetting thunderbolt bus" >&2
}
function listen_for_reset() {
sleep 15 # let the busses settle
do_reset
sleep 90 # don't reset too much
mail -s "$SUBJECT" $EMAIL <<< "$MESSAGE Date: $(date -R)"
dmesg -w | while read line; do
[[ "$line" =~ "xHCI host controller not responding, assume dead" ]] || continue
(
)&
done
}
[ "$1" == "-l" ] && listen_for_reset || do_reset