ทางเลือกแทน rfcomm ไบนารีที่เลิกใช้แล้วในปัจจุบันใน bluez


10

ตั้งแต่ bluez 5.44, rfcomm ไบนารีที่มีอยู่ใน bluez-utils (ในหมู่คนอื่น ๆ เช่น hcitool) ได้รับการพิจารณาว่าเลิกใช้แล้วและต่อจากนี้จะรวมอยู่ในแพ็คเกจ bluez-utils-compat ที่จัดหาโดย AUR

มีแอพพลิเคชั่นบรรทัดคำสั่งที่คล้ายกันในการผูกอุปกรณ์บลูทู ธ เข้ากับพอร์ตอนุกรมโดยใช้โมดูลเคอร์เนล rfcomm หรือฉันต้องใช้ PyBluez หรือ libs ที่คล้ายกันจากนี้เป็นต้นไป

หากภายหลังเป็นกรณีนี้คุณจะแนะนำให้ใช้ไลบรารี Python 3 แบบใด

และถ้ามีใครรู้โปรดบอกฉันว่าทำไม Bluez-utils จำนวนมากจึงถูกคิดค่าใช้จ่ายทั้งหมดในทันที ฉันไม่พบอะไรเกี่ยวกับเรื่องนั้น

ArchWikiแนะนำการใช้ฟังก์ชั่น RFCOMM โดยใช้ใหม่D-Bus โปรไฟล์ 1 API

คำตอบ:


2

ฉันเพิ่งค้นพบโปรเจ็กต์ bluez-toolsซึ่งตั้งเป้าหมายที่จะใช้ฟังก์ชั่นที่หายไปโดยใช้ D-Bus API ปัจจุบันของ Bluez

Bluez-tools พร้อมใช้งานบน ArchLinux จากที่เก็บชุมชน ฉันยังไม่ได้ทดสอบสิ่งนี้และสถานะหน้า GitHub ว่ามันยังอยู่ในช่วงเบต้า แต่ตามเอกสารอธิบาย bt-serial ควรจะสามารถแทนที่ rfz bluez เก่าและ bt-adapter + bt-agent + bt-device มีฟังก์ชันของ hcitool

แก้ไข: เมื่อดูรายการปัญหาและข้อผูกพันล่าสุดเครื่องมือ Bluez ดูเหมือนจะไม่ได้รับการบำรุงรักษาอีกต่อไป


1

ฉันได้พบวิธีแก้ปัญหาอื่นที่เป็นไปได้ ฉันพบสิ่งนี้โดยการขุดผ่าน repo ศูนย์กลางคอมไพล์ของใครบางคน สิ่งนี้ใช้โมดูลซ็อกเก็ต python3 ในตัว

วิชาบังคับก่อน:

  1. คุณมีอะแดปเตอร์ที่ใช้งานได้ตามที่อยู่ <ที่อยู่อะแดปเตอร์>
  2. คุณมีอุปกรณ์บลูทู ธ เป้าหมายที่ <ที่อยู่อุปกรณ์>
  3. อุปกรณ์ถูกปักหมุด

นั่นคือจุดเดียวกับที่ rfcomm สามารถใช้ได้


$python3
>>> import socket
>>> sock = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
>>> adapter = '00:11:22:33:44:55' #<adapter address>
>>> device = '55:44:33:22:11:00' #<device address>
>>> sock.bind((adapter, 1))
>>> sock.connect((device, 1))
## If not pinned it will ask you. You can use/adapt the bluez simple-agent for headless pinning
>>> sock.send(b'hello\n')
>>> sock.recv(100)
>>> sock.close()

เป็นเรื่องดีที่รู้ว่า Python รองรับการสื่อสารแบบอนุกรม Bluetooth ขอบคุณสำหรับการตอบคำถามที่ค่อนข้างเก่า
eike

0

ฉันต้องการทราบเกี่ยวกับปัญหานี้:

  1. ว่าโครงการ GitHubนี้มีฟังก์ชั่น rfcomm บางส่วน (ขึ้นอยู่กับไฟล์ทดสอบ Bluez)
  2. โปรเจ็กต์ bluez เองยังคงมีไฟล์ rfcomm.c ซึ่งสามารถรวบรวมได้อย่างง่ายดายด้วย:

    gcc -lbluetooth rfcomm.c -orfcomm -DVERSION = xyz

... เพียงไฟล์เดียวไม่จำเป็นต้องรวบรวมทั้งโครงการบลูซ์ โดยที่ xyz เป็นรุ่นของซอร์สโค้ดที่ดาวน์โหลดbluez tar.xz (ตอนนี้คือ 5.46) ก่อนที่จะดาวน์โหลดคุณควรตรวจสอบตัวเองก่อนbluetoothd -vและดาวน์โหลดแหล่งที่มาที่ตรงกัน bluez-libs นั้นขึ้นอยู่กับการรวบรวมความสำเร็จเท่านั้น

ฉันต้องการ rfcomm สำหรับ armv7 (ราสเบอร์รี่ 2) และไม่มีแพ็คเกจ aur สำหรับ rfcomm และนี่เป็นวิธีเดียว แต่ใช้ได้ดี

ยังไม่แน่ใจว่าทำไม rfcomm จึงถูกคัดค้านโดยไม่มีทางเลือกที่ดีและวิธีพูดคุยกับบลูทู ธ เนื่องจากเป็นพอร์ตอนุกรมในลักษณะอื่น เพราะแม้คุณจะเป็นผู้เชี่ยวชาญของไพ ธ อนบวกกับผู้เชี่ยวชาญ DBUS ... (เช่นเจ้าของโครงการที่กล่าวถึงข้างต้นก็อาจจะเป็น ... ) แต่ก็มีเพียงฟีเจอร์ห้าตัวที่ให้มาด้วยวิธีนี้ไม่ใช่อุปกรณ์ตัวจริงใน / dev / ... ที่โปรแกรมอื่น ๆ ทั้งหมด ) สามารถดูและทำงานกับ


2
1. หน้าโครงการระบุว่า "เพียงเพื่อหลีกเลี่ยงการนำรหัสเก่าบางอันที่ใช้เครื่องมือเหล่านี้ไปใช้อีกครั้ง" ซึ่งหมายความว่าผู้เขียนจะแนะนำให้ทำตามวิธีการอื่นเมื่อใช้ Bluez สำหรับโครงการใหม่ 2. มีหลายวิธีในการรวบรวม rfcomm ด้วยตนเองสิ่งที่ฉันกำลังค้นหาคือสาเหตุของการคัดค้านและเป็นทางเลือกที่ได้รับการสนับสนุน
eike
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.