Ubuntu'da aptX Desteği ve Bluetooth Kartlar ve Adaptörler

Başlatan programmer, 19 Eylül 2023 - 17:30:25

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

programmer

Zannediyorum aptX, aptx HD gibi kablosuz sıktırma codec'lerinini işlemesi için iki ayrı faktörün bir araya gelmesi gerekiyor. 
1- Yazılmsal destek: Uygun işletim sistemi ve gerekli kütüphanelerin kurulu olması
2- "Coding" uyumlu donanım. Hem alıcı (sink), verici (source) olarak
Yeni bir Bluetooth 5.1 aptX Adaptive desteki bir kulaklık aldım. QCY T18. Sitesindeki bilgilendrmede aptX özelliğinden yararlanabilmek için kaynak cihazın Synapdragon Sound teknolojisini desteklemesi gerekiyor. Bu illa Qulacomm çipinin kullanılması gerektiği anlamına geliyor bilemiyorum, ama öyle değilse bile kullanılırsa daha düzgün olur tahmin ediyorum. Sennheiser HD BT 4.40'ı Bluetooth Twitker kullarak aptX moda sokmuştum Windows'da. herhangi bir QC chip de yok notebookumda. Ama aptX HD için durum farklı olabilir. Benim kablosuz kartım Intel AX201. aptX destekeyip desteklemediği konusunda net bir dökümantasyon bulmadım. Intel forumda bir kişi destek olmadığını belirtmiş, yanıt olarak Intel diagnostik tool for windows aracı ile rapor göndermesi istenmiş. Ben de aliexpress'den eppfun3040G ve eppfun3040plus cihazlarını sipariş verdim. Asıl amacım analog'a dönüştürüp , tekrar sıkıştrma yapamadan, doğrudan ptx HD coding yapmak. Yoksa zaten halihazıda sahip olduğum Nsendato alıcı verici cihaz analogdan aptX HD üretme işini yapıyor. eppfun3040G'nin ise analog bir girişi bulunmuyor. Sayısaldan coding işlemini yapıyor.
Internette yaptığım araştırmada Carlos Bradley'in Temmuz 2023 tarihli yazısını buldum. Aptx desteği için pipewire-debian deposundan pipewire paketinin kurulması gerektiğini yazıyor. Bu işlemleri yaptım. hcidump komutu kullanarak aptX codec olarak bağlantının gerçkeleşip gerçekleşmediğini saptamak mümkün. ama bunu tam olarak anlayamadım henüz. Windows'da ise kendi araçlarıyla bunu tespit etmek pek mümkün değil Windows Performance Analyzer ile toplanan bilgiyi analiz ederek çok zahmetli bir yoldan aptX bağlantı test edilebiliyor. BluetoothTwiker diye uygulama var bu işi kolaylaştıran. Sınır ücretsiz ve lisanlı versiyonları mevcut. Umarım Ubuntu'da Windows'dan olduğundan daha kolay saptayabilirim bu bilgiyi. 
Siparişler gelince yaptığı test sonuçlarını aktarmayı düşünüyorum. Şimdilik sağlıcakla kalın.


programmer

#2
Benim QCY T18 kulalığım aptX destekliyor. Bunun yanısıra aptX Voice ve aptX-Adaptive kodekslerini de (24 bit 96 kHz) destekliyor.
eppfun AK3040G satış bilgilerinde Linux desteklemez dediği halde, Ubuntu 22.04.3'de tanındı. Üstelik Windows'da Intel AX201 Bluetooth sürücü ile aynı anda çalışmıyor iken Ubuntu da ikisi birden çalışıyor. Enterans şekilde eppfun AK3040Plus satış bilgilerinde Linux destekler dediği halde
hciconfig listve
bluetoothctl list
komutlarında listelenmiyor. Ancak
lsusb|grep eppfun
Bus 003 Device 008: ID 0a12:4007 Cambridge Silicon Radio, Ltd eppfun AK3040Plus

QCY T18'e de bağlanıyor. Led rengi aptX codec'i gösterir anlamda mor (purple) yanıyor. Henüz aptx-Adaptive codec'inden bağlaymayı başarabilmiş değilim.
apt_ll kodeksleri için bu çalıştı: https://gist.github.com/the-spyke/2de98b22ff4f978ebf0650c90e82027e
sudo systemctl status bluetooth
● bluetooth.service - Bluetooth service
     Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-10-15 07:10:22 +03; 1min 24s ago
       Docs: man:bluetoothd(8)
   Main PID: 6823 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 18834)
     Memory: 1.2M
        CPU: 397ms
     CGroup: /system.slice/bluetooth.service
             └─6823 /usr/lib/bluetooth/bluetoothd

Eki 15 07:10:23 Ubuntu22 bluetoothd[6823]: Endpoint registered: sender=:1.160 path=/MediaEndpoint/A2DPSink/sbc_xq
Eki 15 07:10:23 Ubuntu22 bluetoothd[6823]: Endpoint registered: sender=:1.160 path=/MediaEndpoint/A2DPSource/sbc_xq
Eki 15 07:10:23 Ubuntu22 bluetoothd[6823]: Endpoint registered: sender=:1.160 path=/MediaEndpoint/A2DPSource/aptx_ll_1
Eki 15 07:10:23 Ubuntu22 bluetoothd[6823]: Endpoint registered: sender=:1.160 path=/MediaEndpoint/A2DPSource/aptx_ll_0
Eki 15 07:10:23 Ubuntu22 bluetoothd[6823]: Endpoint registered: sender=:1.160 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_1
Eki 15 07:10:23 Ubuntu22 bluetoothd[6823]: Endpoint registered: sender=:1.160 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_0
Eki 15 07:10:23 Ubuntu22 bluetoothd[6823]: Endpoint registered: sender=:1.160 path=/MediaEndpoint/A2DPSource/faststream
Eki 15 07:10:23 Ubuntu22 bluetoothd[6823]: Endpoint registered: sender=:1.160 path=/MediaEndpoint/A2DPSource/faststream_duplex
Eki 15 07:10:23 Ubuntu22 bluetoothd[6823]: src/device.c:set_wake_allowed_complete() Set device flags return status: Invalid Parameters
Eki 15 07:10:27 Ubuntu22 bluetoothd[6823]: Endpoint registered: sender=:1.156 path=/org/bluez/hci1/A2DP/SBC/Source/3

Ancak device.c hatası duruyor.


Temiz bir Ubuntu 23.10 kurulumu yapıp pulseaudio yerine pipewire üzerinden aptx* kodekslerini halletmeye çalıştım. epp AK3040G adaptörü, UGreen CM591 gibi Action-semi şirketinin ATS2851 çipini barındırıyor. Bunun için önerilen işlem:

sudo apt install git dkms
 git clone https://github.com/jeremyb31/bluetooth-5.15.git
 sudo dkms add ./bluetooth-5.15
 sudo dkms install btusb/4.1
sudo dkms install btusb/4.1
Sign command: /usr/bin/kmodsign
Signing key: /var/lib/shim-signed/mok/MOK.priv
Public certificate (MOK): /var/lib/shim-signed/mok/MOK.der
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/btusb/4.1/source/dkms.conf)

Building module:
Cleaning build area...
'make' all KVER=6.5.0-9-generic...(bad exit status: 2)
ERROR (dkms apport): binary package for btusb: 4.1 not found
Error! Bad return status for module build on kernel: 6.5.0-9-generic (x86_64)
Consult /var/lib/dkms/btusb/4.1/build/make.log for more information.

cat /var/lib/dkms/btusb/4.1/build/make.log
DKMS make.log for btusb-4.1 for kernel 6.5.0-9-generic (x86_64)
Paz 15 Eki 2023 17:46:38 +03
make -C /lib/modules/6.5.0-9-generic/build M=/var/lib/dkms/btusb/4.1/build modules
make[1]: Entering directory '/usr/src/linux-headers-6.5.0-9-generic'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
  You are using:           gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
  CC [M]  /var/lib/dkms/btusb/4.1/build/btusb.o
/var/lib/dkms/btusb/4.1/build/btusb.c: In function 'btusb_probe':
/var/lib/dkms/btusb/4.1/build/btusb.c:3922:13: error: 'struct hci_dev' has no member named 'prevent_wake'
 3922 |         hdev->prevent_wake = btusb_prevent_wake;
      |             ^~
make[3]: *** [scripts/Makefile.build:251: /var/lib/dkms/btusb/4.1/build/btusb.o] Error 1
make[2]: *** [/usr/src/linux-headers-6.5.0-9-generic/Makefile:2037: /var/lib/dkms/btusb/4.1/build] Error 2
make[1]: *** [Makefile:234: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.5.0-9-generic'
make: *** [Makefile:6: all] Error 2


systemctl status bluetooth
● bluetooth.service - Bluetooth service
     Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
     Active: active (running) since Sun 2023-10-15 17:38:21 +03; 10min ago
       Docs: man:bluetoothd(8)
   Main PID: 14851 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 18849)
     Memory: 1.2M
        CPU: 2.220s
     CGroup: /system.slice/bluetooth.service
             └─14851 /usr/lib/bluetooth/bluetoothd

Eki 15 17:38:21 Ubuntu-23 bluetoothd[14851]: Endpoint registered: sender=:1.75 path=/MediaEndpoint/A2DPSource/opus_05
Eki 15 17:38:21 Ubuntu-23 bluetoothd[14851]: Endpoint registered: sender=:1.75 path=/MediaEndpoint/A2DPSink/opus_05_duplex
Eki 15 17:38:21 Ubuntu-23 bluetoothd[14851]: Endpoint registered: sender=:1.75 path=/MediaEndpoint/A2DPSource/opus_05_duplex
Eki 15 17:38:21 Ubuntu-23 bluetoothd[14851]: Failed to clear UUIDs: Failed (0x03)
Eki 15 17:38:21 Ubuntu-23 bluetoothd[14851]: Failed to add UUID: Failed (0x03)
Eki 15 17:38:21 Ubuntu-23 bluetoothd[14851]: Failed to add UUID: Failed (0x03)
Eki 15 17:38:21 Ubuntu-23 bluetoothd[14851]: Failed to add UUID: Failed (0x03)
Eki 15 17:38:23 Ubuntu-23 bluetoothd[14851]: src/profile.c:record_cb() Unable to get Hands-Free Voice gateway SDP record: Operation already in progress
Eki 15 17:38:46 Ubuntu-23 bluetoothd[14851]: src/service.c:btd_service_connect() a2dp-sink profile connect failed for 1C:52:16:18:81:8B: Device or resource busy
Eki 15 17:46:36 Ubuntu-23 bluetoothd[14851]: /org/bluez/hci1/dev_1C_52_16_18_81_8B/sep6/fd0: fd(66) ready

Yukarda verilen hatalara rağmen, eppfun çalışıyor Logitech M650 L Sol fareye ve QCY kukalığa bağlanıyor, ses veriyor.