summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hurd <shurd@freebsd.org>2025-08-29 20:01:58 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2026-01-16 19:37:46 +0000
commit53d1c328e9123c8065f121afdd9dccb222af2221 (patch)
tree2310db5639805788838079465789ffb15cbf286f
parent5b7aa8225bea341b830666e2724ecb13316e27b0 (diff)
rc: bluetooth: startup improvements
During startup hccontrol reset needs to be run multiple times for iwbt to work more reliably. Add a loop trying up to three times. Tested by: various (original version; I changed test to -eq) Differential Revision: https://reviews.freebsd.org/D44861 Fix a redirect of stderr to stdout which is going to /dev/null. A '&' got missing in the original rewrite from the review that I took and committed. Seems no one had noticed during testing or review. People may have ended up with a "/1" file in their root file system. Fixes: 40652f86b5ef Reported by: Vladyslav Movchan (vladislav.movchan gmail.com) (cherry picked from commit 40652f86b5ef17c9016a5eaf4bc89b2f324540e8) (cherry picked from commit 78807c196c9481cdd88b5ce611b488903f52fbd0)
-rwxr-xr-xlibexec/rc/rc.d/bluetooth13
1 files changed, 11 insertions, 2 deletions
diff --git a/libexec/rc/rc.d/bluetooth b/libexec/rc/rc.d/bluetooth
index 679d669a6191..2903057b8bfb 100755
--- a/libexec/rc/rc.d/bluetooth
+++ b/libexec/rc/rc.d/bluetooth
@@ -127,8 +127,17 @@ bluetooth_setup_stack()
> /dev/null 2>&1 || return 1
# Initilalize HCI node
- ${hccontrol} -n ${dev}hci reset \
- > /dev/null 2>&1 || return 1
+ for loop in 1 2 3
+ do
+ ${hccontrol} -n ${dev}hci reset \
+ > /dev/null 2>&1 && break
+ if [ ${loop} -eq 3 ]
+ then
+ warn Reset failed three times, giving up.
+ return 1
+ fi
+ warn Reset failed, retrying.
+ done
${hccontrol} -n ${dev}hci read_bd_addr \
> /dev/null 2>&1 || return 1