Background: Kupiłem sobie płytkę z RISC-V (Milk-V Mars) i teraz walczę z przeciwnościami losu oraz współczesnej technologii.


Z jakiegoś powodu obraz od producenta nie zawiera sterowników do wifi i BT. Wczoraj udało się zrobić wifi, dzisiaj uda się Bluetooth (nie bez oporu, z obu stron).


Jestem tak dobrze sytuowany, że w skład mojego majątku wchodzą dwa dydki do Bluetooth. Jeden jest wpięty w komputer (właściwie to w monitor, ale wiadomo, everything is connected), a drugi leży w gratach (bo anioł we śnie przepowiedział mi, że kiedyś się przyda podobnie jak 10 kabli HDMI, 20 USB i ten kabel od chujwieczego). Rzeczony dydek jest malutki, znacznie mniejszy niż kompaktowy moduł wifi, który podłączyłem wczoraj do płytki. Jest tak mały, że ciężko go było znaleźć, bo wsadziłem go do pudełka, żeby był łatwiejszy do znalezienia. Problem w tym, że ja nigdy niczego nie wkładam do pudełek (zwykle je wywalam) tylko wrzucam do skrzynki z gratami, więc najpierw przeczesałem całą skrzynkę zanim wpadłem na to, żeby sprawdzić zawartość pudełka z napisem "Bluetooth".


Na początek chciałem zobaczyć przypadek, kiedy działa, więc wtyknąłem go w laptopa i sprawdziłem dmesg. Załadowały się pliki firmware. Szukam w necie, gdzie te pliki znajdę, żeby później je ściągnąć na płytkę (bez zaskoczenia, chip jest od Realtek mimo, że dydek ma logo Edimax). To jeden element układanki, ale muszę też się dowiedzieć, który moduł kernela za tym stoi. Widzę, że każda linijska zaczyna się od hci1, ale po sprawdzeniu okazało się, że do nazwa urządzenia (hci0 zostało przydzielone do BT wbudowanego w laptopa). Nie znajduję niczego, co by wyglądało na nazwę modułu, więc bez zbędnego pierdolenia przeszukuje po prostu katalog bluetooth w źródle kernela pod kątem product id urządzenia (który podaje mi lsusb). Jedno trafienie w pliku btusb.c. Vendor id się zgadza, chip RealTeka też, więc będę celował w ten moduł.


Przechodzimy do płytki. Konkretnie do źródeł kernela od producenta, które sobie ściągnąłem wcześniej. Coś będzie trzeba dokompilować. Po krótkich oględzinach okazuje się, że ten moduł już jest w konfiguracji. Niestety konfiguracja konfiguracją, ale te moduły, które były w obrazie nie chcą się wczytać z jakiegoś powodu, więc i tak muszę to sobie skompilować. Przećwiczone już z wifi, więc wiem, że moduły skompilowane na tych źródłach działają. Jak już skończyło mielić wczytuję skompilowany moduł btusb przez insmod (nie chcę ich nigdzie instalować w systemie dopóki nie mam pewności, że jest ok). Brakuje symboli, dmesg podaje, że brakuje rzeczy w stylu intel_cośtam, rtl_cośtam itp. I tak się ładnie składa, że w katalogu bluetooth są moduły o nazwach btintel, btrtl itp. No, więc je też ładuje. Wtedy btusb wchodzi bez problemu. Podpinam dydka. dmesg podaje tylko, że coś podłączyłem i elo. Co to jest nie wie nikt. Sterownik bluetooth pozostaje niewzruszony.


Tak jak pisałem wcześniej, sprawdzałem czy product id tego urządzenia występuje w źródłach kernela. Ino nie zrobiłem tego na tym konkretnie kernelu od Marsa, ale przez Githuba na tym najnowszym, waniliowym, od pana Torvaldsa. Niby urządzenie nie jest najnowsze, ale może ociągali się z dodaniem go do jądra. Tak więc instaluję ag (wichajster do przeszukiwania plików) i przelatuję folder bluetooth. Ni ma nigdzie tego product id. Sprawdzam sobie jeszcze raz na Githubie, gdzie mi się to znalazło i na płytce w tym samym pliku szukam tego miejsca. W oficjalnym kernelu w tej sekcji jest 6 urządzeń, a w płytkowym tylko jedno. Ale zaraz, jeśli dobrze rozumiem to jest lista urządzeń, które mają w sobie jakiś tam chipset. Czyli chip jest obsługiwany, ale to konkretne urządzenie z tym samym krzemem w środku już nie. Stwierdziłem, że j⁎⁎ać konwenanse i dopisałem id tego mojego dydka do pliku btusb.c. Kompilacja, rmmod, insmod i coś się załadowało. Macham sobie myszką po ekranie i okazuje się, że pojawiła się ikonka BT. Wchodzę w ustawienia BT. "Nic tu nie ma, lol. Weź wtyknij dongle Bluetooth.". No, pojebie mnie zaraz.


Ale mam jeszcze asa w rękawie czyli drugiego dydka. Odpinam od peceta i wpinam w płytkę. Coś się wykryło, ale dmesg raportuje, że brakuje znowu jakiegoś pliku. Ściągam firmware, tym razem Broadcom. Wrzucam do /lib/firmware i rewtykam dydka (a wyciągnięcie takiego maleństwa nie jest łatwe, bo nie ma jak złapać). dmesg wypisał identyczny komunikat, jak na lapku, aczkolwiek tym razem oczywiście nadano nazwę hci0. Czyli wydaje się działa. Robię oględziny. Ikonka jest, ale według settingsów znowu nic nie ma. Identycznie jak przy tamtym.


W tym momencie naszła mnie myśl, że może to GNOME jest po⁎⁎⁎⁎ny. Bo w sumie jest, każdy to wie. Trzeba przejść do tradycyjnych metod czyli do konsoli. Wstukuję sobie literki "blu" i naduszam tabulator. Pokazują mi się różne polecenia, większość zaczyna się od "blueman". Za moich czasów był chyba bluez, ale nie znam się. Nigdy mnie szczególnie temat Bluetooth nie interesował. Każdy, kto kiedyś usiłował sparować dwa urządzenia przez blutacza wie, że w tym protokole siedzi diabieł. Wracając do poleceń, "blueman-manager" wygląda obiecująco. Odpalam. Jest tam taka lista, na niej jedna pozycja ze słowem, którego nie kojarzę. Jestem prostym człowiekiem, jak widzę coś na ekranie to to klikam bez zastanawiania się. Chyba się łączy, ale ostatecznie się nie udaje. Wpsiuję owe tajemnicze słowo w Kaczkę i okazuje się, że to marka telewizora. Ja nie mam telewizora. Tutaj wpada myśl, żeby spróbować się połączyć z czymś, co należy do mnie.


Wstaję i idę po plecak. Wyciągam głośniczek JBL. Już nawet nie pamiętam, czy jest w tym jakaś bateryjka czy nie, ale na wszelki wypadek podłączam go do pierwszego lepszego portu USB na jaki natrafiam (możliwie jak najdalej od płytki, żeby dydek miał utrudnione zadanie). Naduszam na symbol BT i głośniczek zaczyna radośnie mrugać. Na ekranie, na liście pojawił się JBL. Tutaj następuje moje chodzenie od głośniczka do ekranu i z powrotem. Za trzecim razem się udaje. Głośniczek przestaje migać i przechodzi do świecenia, więc jest szansa, że się sparował. Odpalam YouTube w przeglądarce na płytce, żeby zrobić jakiś dźwięk. Odpalam jakiś teledysk. Trwa to wieki, a ja cierpliwie nasłuchuję muzyki. Nagle z głośniczka dobiegają głosy walki. Być może jakieś małe stworzonka zalęgły się w głośniku, gdy ten leżał w plecaku i teraz zaczęły się tłuc między sobą o dostęp do energii z USB. Wtedy patrzę na ekran i widzę reklamę jakiejś gównogierki na komórki, która pasuje do dźwięków z głośnika. Czyli wszycho działa, a w JBL widmo wojny na moim terytorium zostało zażegnane.


Dla porządku sprawdziłem też tamtego Edimaksa. Też działał. Czyli oba dydki działają. Pozytywne zakończenie tej pięknej historii.


A klawiaturka z obrazka już do mnie idzie. I teraz już mam, jak ją połączyć.


#linux #riscv #zawszekurwacos

87e43cac-d07d-499f-900e-2ae5ea5960c7

Komentarze (2)

Zaloguj się aby komentować