システム起動時にBluetoothデバイスを有効にしたいです。
推奨されるアプローチは何ですか?
コマンドはですsudo hciconfig hci0 up
。
入れるべきですか/etc/rc.local
?それとも使用する必要がありますかupdate-rc.d
?
これを行う「正しい」方法がない場合はを選択します/etc/rc.local
。
ありがとうございます。
編集する
@krtの答えに従って@reboot cronjobを追加しましたが、hci0
再起動時にまだ終了します。/var/log/syslog
ジョブが正しく実行されているかどうかによって異なります。
1136 May 24 11:17:20 klein /usr/sbin/cron[2107]: (CRON) INFO (pidfile fd = 3)
1137 May 24 11:17:20 klein /usr/sbin/cron[2108]: (CRON) STARTUP (fork ok)
1138 May 24 11:17:20 klein /usr/sbin/cron[2108]: (CRON) INFO (Running @reboot jobs)
答え1
システムはbluetoothd
自動的に起動しますか?その場合は、その構成を確認する必要があります。hciconfig
起動時に設定した設定を上書きできます。
たとえば、[Policy]
myセクションのデフォルト値/etc/bluetooth/main.conf
は。に設定すると、すべてのBluetoothインターフェースが自動的に有効になります。AutoEnable
false
true
bluetoothd
これよりも細かい制御が必要な場合は、bluetoothctl
BlueZのバージョンに応じて、または他のコマンドを使用する必要があります。
答え2
そしてシステム装置たとえば、デバイスが到着するとすぐに起動し、失敗した場合は失敗するように作成して/usr/lib/systemd/system/bluetooth-audio.service
追加します。After=bluetooth.target
bluetooth.target
BindsTo=bluetooth.target
bluetooth.target
#!/bin/sh
[Unit]
Description=Bluetooth Audio Connect
ConditionPathIsDirectory=/sys/class/bluetooth
After=bluetooth.target
BindsTo=bluetooth.target
[Service]
ExecStart=/home/scripts/bluetooth_connect.sh
Type=simple
systemctl daemon-reload
そしてsystemctl start bluetooth-audio.service
デバイスを起動してください。問題は、udev
Bluetoothなしでスクリプトを実行することはまだ役に立たないということです。これは対応(鉱山)ですBluetooth接続そしてBluetooth接続が切断されました。シェルスクリプト。
答え3
私はUbuntu 20.04 LTSを使用しており、systemd.serviceを使用して起動時にhciconfigスクリプトをロードしています。
/usr/bin/ の下にスクリプトを保存します。
sudo cat /usr/bin/hciconfig_bt.sh #! /bin/bash # 'Interference between Headphones and Mouse' fix # from https://wiki.archlinux.org/index.php/Bluetooth#Interference_between_Headphones_and_Mouse hciconfig hci0 lm ACCEPT,MASTER hciconfig hci0 lp HOLD,SNIFF,PARK`
systemd.serviceユニットを作成し、/etc/systemd/system/に移動します。
cat /etc/systemd/system/hciconfig_bt.service [Unit] Description=Bluetooth Mouse & Headphone Interference Fix systemd service. [Service] Type=forking ExecStart=/bin/bash /usr/bin/hciconfig_bt.sh [Install] WantedBy=multi-user.target
chmod +x
スクリプトとsystemd.serviceユニットに対してこれを行う必要があります。成功を確実にするために実行してください
systemctl start 'your systemd.service unit'
。最後に
systemctl enable 'your systemd.service unit'
起動時にデバイスを呼び出すために実行します。
systemd.serviceについてよくわからない場合は、まず次の記事を確認してください。
https://www.linode.com/docs/quick-answers/linux/start-service-at-boot/ https://www.freedesktop.org/software/systemd/man/systemd.service.html
答え4
次の内容を入れてください/etc/cron.d/<yourfilename>
#enable BT
@reboot root hciconfig hci0 up