</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

بلوتوث در Gentoo — BlueZ، bluetoothctl و اتصال دستگاه‌ها

آموزش کامل بلوتوث در Gentoo: نصب BlueZ و Blueman، پیکربندی کرنل، راه‌اندازی سرویس، اتصال دستگاه با bluetoothctl و رفع خطاهای رایج صدا و جفت‌شدن.

مقدماتی۷ دقیقه مطالعهآخرین بروزرسانی: ۱ تیر ۱۴۰۵ویرایش در گیت‌هاب

بلوتوث در Gentoo توسط پشته BlueZ پشتیبانی می‌شود؛ مجموعه‌ای از daemon، کتابخانه و ابزارهای خط فرمان که هم برای دسکتاپ و هم برای سرور کار می‌کند. در این مستند با نصب BlueZ، پیکربندی کرنل، راه‌اندازی سرویس و اتصال دستگاه‌ها (هدفون، موس، کیبورد) با bluetoothctl آشنا می‌شویم. برای رابط گرافیکی هم Blueman را معرفی می‌کنیم.

پیش‌نیازها: پیکربندی کرنل#

برای کار بلوتوث، کرنل باید از پروتکل‌های BT، HCI و پروفایل‌های RFCOMM/HIDP پشتیبانی کند. اگر از Distribution Kernel استفاده می‌کنید، بیشتر این‌ها فعال‌اند. در Manual Kernel باید این گزینه‌ها را در make menuconfig فعال کنید:

Networking support  --->
  <*> Bluetooth subsystem support  --->
    <*> RFCOMM protocol support
    <*> BNEP protocol support
    <*> HIDP protocol support
    Bluetooth device drivers  --->
      <*> HCI USB driver
      <*> HCI UART driver
      <*> HCI BCM203x USB driver
      <*> HCI BPA10x USB driver

در کرنل‌های مدرن، درایور USB به‌صورت ماژول btusb ساخته می‌شود. بررسی کنید:

lsmod | grep bluetooth
# خروجی:
# bluetooth             614400  12 btrtl,btmtk,btintel,btbcm,bnep,btusb
# ecdh_generic           16384  1 bluetooth
# crc16                  16384  2 bluetooth,ext4
 
# مشاهده دستگاه HCI
hciconfig -a
# خروجی:
# hci0: Type: Primary  Bus: USB
#       BD Address: 00:1A:7D:DA:71:13  ACL MTU: 310:10  SCO MTU: 64:8
#       UP RUNNING PSCAN ISCAN
#       RX bytes:1498 acl:0 sco:0 events:43 errors:0
#       TX bytes:945 acl:0 sco:0 commands:43 errors:0

اگر hciconfig خروجی نداد

دستور hciconfig از بسته net-wireless/bluez-hcidump می‌آید. در نسخه‌های جدید BlueZ پیشنهاد می‌شود از bluetoothctl و hcitool استفاده کنید. اگر دستگاه HCI نمایش داده نمی‌شود، بررسی کنید که ماژول btusb بارگذاری شده و دستگاه USB شناسایی شده است: lsusb | grep -i bluetooth.

نصب BlueZ#

بسته اصلی net-wireless/bluez است. برای مدیریت گرافیکی، net-wireless/blueman را اضافه کنید:

# نصب BlueZ
emerge --ask net-wireless/bluez
# خروجی:
# [ebuild  N    ] net-wireless/bluez-5.79  USE="... -test"
 
# نصب رابط گرافیکی Blueman (اختیاری)
emerge --ask net-wireless/blueman
# [ebuild  N    ] net-wireless/blueman-2.4.4
 
# ابزارهای کمکی (اختیاری)
emerge --ask net-wireless/bluez-tools

برای پخش صدا از طریق هدفون بلوتوث، به PipeWire نیاز دارید که به‌صورت خودکار پروفایل‌های A2DP و HSP/HFP را مدیریت می‌کند.

فعال‌سازی سرویس#

در OpenRC:

# افزودن به runlevel پیش‌فرض
rc-update add bluetooth default
# خروجی:
#  * service bluetooth added to runlevel default
 
# شروع سرویس
rc-service bluetooth start
#  * Starting bluetooth ...
 
# بررسی وضعیت
rc-service bluetooth status
#  * status: started

در systemd:

systemctl enable bluetooth
# Created symlink /etc/systemd/system/bluetooth.target.wants/bluetooth.service → ...
systemctl start bluetooth
systemctl status bluetooth
# Active: active (running)

ماژول btusb و rfkill

اگر دستگاه شناسایی نمی‌شود، مطمئن شوید ماژول btusb بارگذاری شده است: modprobe btusb. همچنین برخی لپ‌تاپ‌ها بلوتوث را با rfkill خاموش می‌کنند — بررسی کنید: rfkill list و در صورت نیاز rfkill unblock bluetooth.

اتصال دستگاه با bluetoothctl#

bluetoothctl ابزار تعاملی خط فرمان است که برای جفت‌شدن و اتصال دستگاه‌ها استفاده می‌شود:

bluetoothctl
# [bluetooth]#

در محیط تعاملی، این دنباله را اجرا کنید:

[bluetooth]# power on
Changing power on succeeded
 
[bluetooth]# agent on
Agent registered
 
[bluetooth]# default-agent
Default agent request successful
 
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:1A:7D:DA:71:13 Discovering: yes
[NEW] Device AA:BB:CC:DD:EE:FF WH-1000XM5
[NEW] Device 11:22:33:44:55:66 MX Master 3S
 
[bluetooth]# pair AA:BB:CC:DD:EE:FF
Attempting to pair with AA:BB:CC:DD:EE:FF
[CHG] Device AA:BB:CC:DD:EE:FF Connected: yes
Request confirmation
[agent] Confirm passkey 123456 (yes/no): yes
[CHG] Device AA:BB:CC:DD:EE:FF Paired: yes
 
[bluetooth]# trust AA:BB:CC:DD:EE:FF
[CHG] Device AA:BB:CC:DD:EE:FF Trusted: yes
Changing AA:BB:CC:DD:EE:FF trust succeeded
 
[bluetooth]# connect AA:BB:CC:DD:EE:FF
Attempting to connect to AA:BB:CC:DD:EE:FF
[CHG] Device AA:BB:CC:DD:EE:FF Connected: yes
Connection successful
 
[bluetooth]# quit
دستورکاربرد
power onروشن‌کردن آداپتور
agent onفعال‌کردن agent احراز هویت
scan onشروع جستجوی دستگاه‌ها
pair ADDRجفت‌شدن با دستگاه
trust ADDRاعتماد به دستگاه (اتصال خودکار بعدی)
connect ADDRاتصال به دستگاه جفت‌شده
disconnect ADDRقطع اتصال
remove ADDRحذف دستگاه از لیست جفت‌شده‌ها
info ADDRنمایش اطلاعات دستگاه
devicesلیست دستگاه‌های جفت‌شده

دستگاهی که از حافظه پاک شده است

اگر دستگاه قبلاً جفت شده اما حالا وصل نمی‌شود، ابتدا آن را remove کنید و دوباره pair کنید. دستگاه‌ها گاهی پس از تغییر آداپتور یا فلش کردن سیستم، نیاز به جفت‌شدن دوباره دارند.

مدیریت با Blueman (رابط گرافیکی)#

اگر blueman نصب شده باشد، یک آیکون بلوتوث در سیستم‌ترای دسکتاپ (GNOME، KDE، XFCE) ظاهر می‌شود. با کلیک روی آن می‌توانید دستگاه‌ها را جستجو، جفت و وصل کنید. Blueman در پس‌زمینه از همان bluetoothctl و BlueZ API استفاده می‌کند.

# اجرای applet بلوتوث (اگر خودکار شروع نشد)
blueman-applet &
 
# اجرای مدیر دستگاه‌ها
blueman-manager

صدا از طریق بلوتوث#

پخش صدا از طریق هدفون یا اسپیکر بلوتوث به‌طور خودکار توسط PipeWire انجام می‌شود؛ نیازی به نصب بستهٔ جداگانه نیست. پس از اتصال هدفون، در pavucontrol یا تنظیمات صوتی دسکتاپ، دستگاه بلوتوث به‌عنوان خروجی جدید ظاهر می‌شود.

پروفایل A2DP در برابر HSP/HFP

A2DP کیفیت بالاتر اما یک‌طرفه (فقط پخش) دارد. HSP/HFP کیفیت پایین‌تر اما دوطرفه (میکروفون) دارد. برای موسیقی از A2DP و برای تماس از HFP استفاده کنید. PipeWire به‌طور خودکار بر اساس نیاز برنامه پروفایل را تغییر می‌دهد.

خطاهای رایج#

۱. دستگاه جفت شده اما صدایی نمی‌آید#

Device connected, but no audio output

دلیل: PipeWire در حال اجرا نیست یا کاربر در گروه‌های لازم نیست. راه‌حل:

# بررسی اجرای PipeWire
pgrep -a pipewire
# باید خروجی داشته باشد
 
# بررسی عضویت در گروه‌ها
groups
# باید شامل audio و video باشد
 
# افزودن کاربر به گروه‌ها (در صورت نیاز)
gpasswd -a ali audio
gpasswd -a ali video
# سپس خروج و ورود مجدد
 
# بررسی دستگاه خروجی
wpctl status   # لیست sinkهای صوتی

۲. خطای No default controller available#

[bluetooth]# power on
No default controller available

دلیل: آداپتور بلوتوث شناسایی نشده یا خاموش است. راه‌حل:

# بررسی دستگاه USB
lsusb | grep -i bluetooth
# Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle
 
# بارگذاری ماژول
modprobe btusb
 
# بررسی rfkill
rfkill list bluetooth
# 1: hci0: Bluetooth
#       Soft blocked: yes
rfkill unblock bluetooth
 
# بررسی dmesg
dmesg | grep -i bluetooth
# [   12.345] bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000b lmp_ver=08

۳. جفت‌شدن شکست می‌خورد (همراه با passkey)#

Pairing failed: org.bluez.Error.AuthenticationFailed

دلیل: دستگاه قبلاً در سیستم دیگری جفت شده یا PIN اشتباه است. راه‌حل:

# ابتدا دستگاه را از حافظه قبلی پاک کنید
bluetoothctl
[bluetooth]# remove AA:BB:CC:DD:EE:FF
 
# ریست آداپتور
[bluetooth]# power off
[bluetooth]# power on
 
# دوباره جفت کنید
[bluetooth]# scan on
[bluetooth]# pair AA:BB:CC:DD:EE:FF

خلاصه و مرحله بعد#

بلوتوث در Gentoo با BlueZ به‌سادگی راه می‌افتد: نصب net-wireless/bluez، فعال‌کردن سرویس bluetooth و سپس اتصال دستگاه‌ها با bluetoothctl یا Blueman. برای صدا از طریق بلوتوث، PipeWire مسئولیت مدیریت پروفایل‌ها را بر عهده دارد.

برای پیکربندی صدای سیستمی به آموزش PipeWire و برای دسکتاپ‌های مدرن به آموزش GNOME یا آموزش KDE مراجعه کنید. اگر دسکتاپ شما Wayland است، آموزش Wayland را هم ببینید.

اشتراک‌گذاری:

این صفحه در تاریخ ۱ تیر ۱۴۰۵ به‌روزرسانی شده است.