시스템 시작 시 블루투스 장치를 활성화하고 싶습니다.
권장되는 접근 방식은 무엇입니까?
명령은 입니다 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
은 . 로 설정하면 모든 블루투스 인터페이스가 자동으로 활성화됩니다 .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
블루투스 없이는 스크립트를 실행하는 것이 아직 쓸모가 없다는 것입니다. 이것은 해당 (광산)입니다블루투스 연결그리고블루투스 연결이 끊어졌습니다.쉘 스크립트.
답변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