始めるには、 `hciconfig hci0 up`をどこに置くべきですか?

始めるには、 `hciconfig hci0 up`をどこに置くべきですか?

システム起動時に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インターフェースが自動的に有効になります。AutoEnablefalsetruebluetoothd

これよりも細かい制御が必要な場合は、bluetoothctlBlueZのバージョンに応じて、または他のコマンドを使用する必要があります。

答え2

そしてシステム装置たとえば、デバイスが到着するとすぐに起動し、失敗した場合は失敗するように作成して/usr/lib/systemd/system/bluetooth-audio.service追加します。After=bluetooth.targetbluetooth.targetBindsTo=bluetooth.targetbluetooth.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デバイスを起動してください。問題は、udevBluetoothなしでスクリプトを実行することはまだ役に立たないということです。これは対応(鉱山)ですBluetooth接続そしてBluetooth接続が切断されました。シェルスクリプト。

答え3

私はUbuntu 20.04 LTSを使用しており、systemd.serviceを使用して起動時にhciconfigスクリプトをロードしています。

  1. /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`
    
  2. 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
  1. chmod +xスクリプトとsystemd.serviceユニットに対してこれを行う必要があります。

  2. 成功を確実にするために実行してくださいsystemctl start 'your systemd.service unit'

  3. 最後に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

関連情報