Pemecahan Masalah Bluetooth

Dzickus, Hhlp, Devurandom Versi 37,38 Last review: 2023-09-04

Bluetooth adalah protokol nirkabel jarak pendek yang digunakan untuk menghubungkan ke berbagai perangkat I/O berbandwidth rendah (seperti keyboard, mouse, dan headset). Versi terbaru memiliki mode hemat energi dengan bandwidth dan jangkauan yang sedikit lebih tinggi.

Solusi Bluetooth terdiri dari daemon ruang pengguna, bluetoothd, yang berkomunikasi melalui port manajemen di kernel dengan driver perangkat keras. Aplikasi yang ingin berkomunikasi dengan daemon bluetoothd melakukannya melalui antarmuka d-bus. Ini termasuk berbagai applet Bluetooth GNOME.

Mengidentifikasi Masalah Bluetooth

Apakah perangkat keras Bluetooth telah ditemukan?

  • pastikan Bluetooth telah terdeteksi dan diaktifkan (perhatikan hci0: dan ‘UP RUNNING’):

    $ hciconfig
    hci0:	Type: Primary  Bus: USB
    	BD Address: xx:xx:xx:xx:xx:xx  ACL MTU: 1021:4  SCO MTU: 96:6
    	UP RUNNING PSCAN
    	RX bytes:15047 acl:0 sco:0 events:2433 errors:0
    	TX bytes:599323 acl:0 sco:0 commands:2431 errors:0
  • Jika perintah tidak mengembalikan apa pun (tidak ada informasi hci:), maka terdapat masalah hardware

    $ lsusb -v | grep Bluetooth | grep DeviceProtocol
    bDeviceProtocol         1 Bluetooth
  • Jika perintah lsusb tidak menampilkan apa pun, berarti tidak ada perangkat keras, dan output dmesg diperlukan

  • Jika perintah lsusb menampilkan Bluetooth, maka periksa apakah driver yang terpasang

    $ lsusb -t | grep Wireless
        |__ Port 4: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
        |__ Port 4: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
  • Jika Driver kosong, output lsusb -v diperlukan untuk menambahkan ID

  • Jika hciconfig menampilkan output tetapi tidak dalam status UP

    $ hciconfig up
  • Daftar perangkat yang terhubung:

    $ bluetoothctl
    [bluetooth]# show
    [bluetooth]# devices
    [bluetooth]# info <mac addr of any device you have problems with>

Apakah daemon bluetoothd sedang berjalan?

  • Pastikan bahwa Bluetooth di bawah systemd dalam keadaan 'Active' dan 'enabled'

    $ systemctl status bluetooth
    ● bluetooth.service - Bluetooth service
       Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2017-10-04 16:07:40 EDT; 1 day 22h ago
         Docs: man:bluetoothd(8)
     Main PID: 27427 (bluetoothd)
       Status: "Running"
        Tasks: 1 (limit: 4915)
       CGroup: /system.slice/bluetooth.service
               └─27427 /usr/libexec/bluetooth/bluetoothd
  • Pastikan obex telah dikonfigurasi untuk dijalankan (untuk mentransfer file dari ponsel)

$ systemctl --global --user is-enabled obex
  enabled

Debugging sederhana

Sebagian besar masalah Bluetooth terjadi pada paket bluez (bluetoothd), yaitu daemon ruang pengguna.

Mengaktifkan mode debugging bluetoothd
  • edit /usr/lib/systemd/system/bluetooth.service

  • tambahkan opsi -d ke baris ExecStart untuk bluetoothd

  • simpan dan keluar

$ systemctl daemon-reload
$ systemctl restart bluetooth

Debugging telah diaktifkan dan dapat membantu mengidentifikasi lokasi beberapa masalah Bluetooth

Simpan log untuk dimasukkan ke dalam laporan Bugzilla
$ journalctl -r -u bluetooth > /tmp/bluetoothd.out

Memecahkan masalah firmware

Terkadang, firmware adaptor Bluetooth masuk ke keadaan di mana ia tidak dapat dipasangkan dengan perangkat Bluetooth tertentu (atau semua perangkat Bluetooth). Anda mungkin dapat mengatasi masalah tersebut dengan mengatur ulang adaptor Anda.

Dalam kasus laptop yang dilengkapi dengan adaptor Bluetooth bawaan, hal ini dapat dicapai dengan:

  1. Masuk ke pengaturan firmware laptop (BIOS) dan nonaktifkan adaptor bawaan

  2. Simpan pengaturan dan hidupkan ulang laptop

  3. Masuk ke pengaturan firmware untuk kedua kalinya dan aktifkan kembali adaptor Bluetooth

  4. Simpan dan mulai ulang

  5. Sekarang coba pasangkan perangkat tersebut lagi