** Linux Kernel 6.2 부터 지원된다.
아치 리눅스에선 23년 2월 28일부터 6.2 가 공식 제공된다.
흠.. 얼핏 찾아보고 된다고 해서 샀는데.. 젠장!
일요일 하루를 꼬박 투자한 결과가, ‘아직은 안된다’ 였다. (이 글 마지막에 있지만, 커널 6.1.1 에서 될 가능성은 아주 높다.)
그 덕에 이런 저런 잡지식은 늘었으나..
BlueTooth 기기가 리눅스에서 지원되는지 확인하려면, 먼저 btusb 모듈의 소스코드를 확인해야 한다.
길고 긴 코드 중에서 뭘 봐야 하는고 하니..
# lsusb Bus 001 Device 007: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 001 Device 006: ID 2b89:8761 Realtek Bluetooth Radio
현재 동글이 2개가 붙어있다. 하나는 CSR 호환 기종, 그리고 문제의 Ugreen.
여기에서 보이는 2b89 는 Vendor 식별자이고, 8761 은 ProdID(Product ID) 이다. 이게 btusb.c 에 등록이 돼 있으면 사용가능하고, 그렇지 않으면 불가능한 듯 하다.
현재, Ugreen CM390 은 Vendor 2b89, ProdID 8761 인데, btusb.c 에 아직 올라있질 못하다. 심지어 개발 커널인 6.1 에도 없다. 검색을 해보니.. 11월 초에 보고는 된 듯한데.. (물론 당연히 CSR 은 btusb.c 에 등록돼 있고, 따라서 제대로 잘 작동한다.)
이게 어느 세월에 적용이 될지는… (아무리 늦어도 1년 안에야 되겠지.)
이 파일만 바꿔서 컴파일하면 되려나??
그거 하나 하자고 커널 컴파일을???
리눅스를 처음 설치하던 시기엔 커널 컴파일도 당연하다는 듯 하긴 했었는데.. 내가 해 봤었는진 기억이 나지 않는다. 아마 안해봤겠지.
** 참고로..
이 기기에 쓰인 칩셋은 Realtek 8761BUV 이고, 이를 리눅스에서 쓸 수 있는지 여부를 검색하면, linuxreviews.org 에 있는 대로, 펌웨어를 설치해야 한다는 글이 대다수다.
이게 틀린 방법은 아닌데, 아치리눅스에서나, Ubuntu 22.04 기반에서는 더 이상 할 필요가 없다. 이미 펌웨어는 설치 돼 있기 때문이다.
펌웨어가 있기 때문에 블루투스 동글이 제대로 인식은 된다. btmgmt
라든가, bluetoothctl
에서 제대로된 동글 정보를 볼 수 있다.
그!러!나!
블루투스 기기를 찾지를 못한다. 이러면 뭐, 말짱 꽝이지.
이게 되려면, btusb 모듈에 저 정보가 등록되어야 하는 모양이다.
자.. 문제는 이게 아니고.
제대로 되는 동글을 사고 싶은데, Vendor/ProdID 를 알 방법이 없네.
사서 껴보고 나서야 알 수 있게 되니..
** 2022.12.12
결국 커널 빌드에 도전했다.
과연 성공할 수 있을지..???
……
된다.
커널 빌드가 이렇게 시간이 오래 걸리는 작업인줄은 미처 몰랐다. 무려 3시간 정도나.. 어쨌든, btusb.c 에 저 값을 추가했더니 이 동글, 잘 작동한다. (오래 써보진 않아서 어떤 다른 문제가 있을 지는 모르겠다.)
현재 내 커널은 6.0.12-arch1-1 인데, 작업을 시작했을 때 6.1 이 정식 발표가 된 상태였다. 따라서 자연스럽게 6.1 소스로 작업을 했고, 당연히 6.1이 설치 됐다.
그런데.. 이렇게 했더니 몇가지 문제가 발생한다. 물론 묘하게도 커널이 바뀐 상황(6.0.12 -> 6.1.0)에서 내가 작업을 했기에 이런 상황이 돼버리긴 했지만, 내가 만든 커널 꾸러미를 설치해서 성공은 했지만, 부수 꾸러미(kernel-headers 라든가..)가 없어서 dkms 쪽에 문제가 발생한다.
흠.. 이렇게 만든 btusb.ko.zst
만 바꿔치기하면 안되려나? 커널을 모두 새로 컴파일해야 하나..?
일단 아치리눅스에 커널 6.1 꾸러미가 올라오면 설치한 뒤, btusb.ko.zst 만 내가 만든 것으로 바꿔봐야겠다.
** 2022.12.14
오늘 확인해보니, 이 내용이 반영되었다! (커널 6.2 에 포함된다.) 발빠른 아치리눅스라면, 잘하면 올해 안으로도 쓸 수 있게될 지도 모르겠네.
결국 Ugreen 때문에 팔자에 없던 커널 빌드까지 해본 셈이 됐는데.. 이게 리눅스의 매력이라면 매력인게지.
** 22.12.22
아치리눅스 커널이 6.1.1(6.1.1-arch1-1) 로 올라가긴 했는데, 아직 이 내용은 반영되지 않았다. 정식 커널은 아직 6.1 인데, 아치리눅스에서 추가/수정하여 6.1.1 로 공개한 모양이다.
아직 저 내용은 master 에만 있을 뿐 6.1.1 로 Tag 되지 않은 상황이라.. 정식 커널이 6.1.1 로 올라가면 그때야 비로소 이 동글을 쓸 수 있겠지.. (올해 안에는 아무래도 어려울 듯?)
** 23.2.28
아치리눅스 커널이 6.2.1 로 올라갔고, 드디어 이 동글이 정상 작동하기 시작했다.LTS 커널인 6.1 에도 6.2 에 있는 몇가지 기능이 탑재(Backport)될 예정이라곤 하는데, 이것까지 포함이 될 진 모르겠다.