Wysłany: 2011-05-22, 10:56 Broadcom BCM5787M/BCM5784M i podobne
Broadcomy ponoć lubią OS X, a OS X lubi broadcomy, tyle że kilka kart sieciowych z serii BCM57xx stanowi od tej reguły ewidentny wyjątek. Jak je nakłonić do współpracy ze Śnieżną Panterą? O tym właśnie traktuje ten miniporadnik.
Ponieważ w Internecie można znaleźć wiele sprzecznych opinii na temat wspomnianych chipsetów, postanowiłem zadać sobie odrobinę trudu i zebrać w jednym miejscu mniej lub bardziej sprawdzone rozwiązania.
Podstawy
Do zastosowania wymienionych tutaj metod potrzebna Ci będzie następująca wiedza:
- kext to tak naprawdę folder z dziwnym rozszerzeniem; aby dostać się do środka należy użyć prawego klawisza myszki i wybrać Pokaż zawartość pakietu
- jak naprawić uprawnienia / odświeżyć cache (najprościej programem KextWizard)
- jak zdobyć device id swojej karty sieciowej (polecam użycie w terminalu komendy lspci -nn pod linuksem / OS X z zainstalowaną paczką)
- co to jest DSDT, jak je wydobyć i modyfikować (mamy o tym cały dział na forum)
Sposób 1. Edycja Info.plist
Jak w zdecydowanej większości przypadków, wszelkie starania odpalenia niedziałającego sprzętu (którego rodacy znaleźli się w komputerach Apple) warto zacząć od próby załadowania sterowników dostępnych w systemie - robimy to, edytując Info.plist odpowiedniego kexta, w naszym przypadku AppleBCM5701Ethernet.kext znajdującego się w IONetworkingFamily.kext
Odszukujemy w Info.plist coś, co wygląda jak:
i dopisujemy tam swoje id lub zmieniamy istniejące. Zapisujemy, naprawiamy uprawnienia i przebudowujemy cache, a potem restart. Jeśli ta metoda nie zadziała, przechodzimy dalej.
Uwaga! W przypadku BCM5784M, 5787M i wyżej, nie ma sensu nawet próbować - nie zadziała.
Sposób 2. Wykorzystanie zmodyfikowanego pluginu dla OS X 10.6.3+
Na insanelymac jakiś czas temu zawiązał się spisek przeciwko niedziałaniu karty BCM5787M. W ruch poszedł hexeditor i efekt jest taki, że mamy działający kext do tego broadcoma, a także dla BCM5784M - działa w zasadzie to samo. Przez działający mam na myśli pracę w 32 i 64 bitach, usypianie i wybudzanie, funkcję Wake on LAN, odczytywanie adresu mac z karty i takie tam. Po prostu pobieramy archiwum, rozpakowujemy i... pod żadnym pozorem nie wolno przeciągnąć tego do KextWizarda/KextUtility ani wrzucić luzem do /S/L/E - po prostu nie zadział i tyle, a na forum będą się mnożyć tematy z problemami, które jakiś mądry użytkownik insanely dawno rozwiązał.
Pobrany plugin należy podmienić z oryginalnym w IONetworkingFamily - po naprawieniu uprawnień i restarcie albo mamy lan, albo nie. Jeśli mamy, to się cieszymy, jeśli zaś nie - czytamy dalej, bo rozwiązania istnieją i mają się całkiem dobrze.
Jest też opcja dla wygodnych, a mianowicie paczka instalacyjna która przenosi wspomniany plugin we właściwe miejsce. Wystarczy kliknąć kilka razy Dalej oraz podać hasło administratora. Nie trzeba nawet zaglądać do folderu System
2.1użycie IOPCMCIAFamily.kext poprawiającego wykrywanie kart pci
Tutaj żadnej filozofii nie ma, po prostu instalujemy kext dowolną metodą. Rozwiązanie mało eleganckie, ale za to proste i szybkie. W niektórych przypadkach się sprawdza.
2.2użycie starszej wersji zmodyfikowanego pluginu - 10.6.2+
Podobnie jak w punkcie 2. podmieniamy oryginalny plugin w IONetworkingFamily. Starsza wersja jest dużo mniej stabilna (u mnie co jakieś piętnaście-dwadzieścia minut powodowała kernel panic) oraz nie odczytuje adresu mac z karty, co niektóre routery wyprowadza z równowagi - możemy go oczywiście ustawić ręcznie, ale będziemy to musieli robić co uruchomienie systemu.
Rozwiązanie jeszcze mniej eleganckie niż poprzednie, zdecydowanie nie polecam. Wspominam o tej możliwości tylko i wyłącznie ze względu na jej prostotę i niemalże pewność odpalenia 5787M.
2.3modyfikacja DSDT
Metoda, którą sam stosuję, bo nie wymaga wrzucania/modyfikowania dodatkowych kextów.
W tym miejscu jedną rzecz musimy sobie wyjaśnić: jeśli po wrzuceniu pluginu BCM5787/4 jeszcze nie działa, to nie dlatego, że kext jest zły, ale dlatego, że system "nie skapnął się", że mamy tę kartę w ogóle podłączoną do pci. Trzeba więc mu o tym powiedzieć w sposób na tyle bezpośredni, aby nie śmiał się z nami nie zgodzić.
Za pomocą programu IORegistryExplorer lokalizujemy port, pod jaki podpięta jest nasza karta sieciowa. Wyszukujemy więc ethernet, jeśli nic nie znajdziemy, próbujemy LAN, 1693 i co nam jeszcze przyjdzie do głowy. Gdy już mamy nazwę portu, odszukujemy w DSDT Device (NAZWA_PORTU) i dopisujemy sekcję lanu wyglądającą m/w tak:
Kod:
Device (LAN)
{
Name (_ADR, Zero)
Method (_DSM, 4, NotSerialized) //jeśli LAN już jest, to dodajemy tylko tę metodę
{
Store (Package (0x04)
{
"model",
Buffer ()
{
"Broadcom BCMxxxx" //tutaj możemy wstawić co chcemy
},
Ta poprawka sprawi, że system zaakceptuje egzystencję naszej karty i załaduje sterowniki, które wcześniej zainstalowaliśmy. Oczywiście koniecznością jest posiadanie w DSDT metody DTGP - "poprawkę" tę można znaleźć w odpowiednim dziale na forum.
Jeśli ktoś czuje potrzebę zapoznania się z całą historą BCM5701.kext modyfikowanego hexeditorem, znajdzie ją na insanelymac:
Sposób 3. BCM5722D, kext oparty na kodzie źródłowym sterowników innego broadcoma oraz Linuksowego tg3 i if_bge pod FreeBSD
Natknąłem się na ten projekt przypadkiem i postanowiłem przetestować. O dziwo, działa, ponadto wszystko sprowadza się do instalacji kexta w /S/L/E. Niczego nie usuwamy ani nie podmieniamy. W niektórych wypadkach należy jednak dopisać kartę do DSDT (lub zastosować kext poprawiający wykrywanie kart pci).
Autor twierdzi, że obsługiwane są następujące modele: 5787, 5784, 5754, 5755, 5906, 5787M, 5784M, 5754M, 5755M, 5906M. W temacie jednak przewija się jeden czy dwa działające pod dopisaniu pci id, których na tej liście nie znajdziemy. Osobiście mogę potwierdzić działanie tej pierwszej, którą sam mam w laptopie oraz ostatniej (dzięki uprzejmości znajomego). Zmiana kexta nie wpłynęła negatywnie na działanie sleepu, wystąpiło natomiast zauważane spowolnienie działania systemu, jednak błąd zgłosiłem i autor coś z nim zrobił, tak że już jest dobrze . Projekt jest stosunkowo młody i chyba wiele można mu wybaczyć - moim zdaniem ten kext to i tak niemały sukces. W końcu niecodziennie ktoś przerabia sterowniki z Linuksa i FreeBSD na OS X Zainteresowanych projektem odsyłam tutaj:
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Nie możesz ściągać załączników na tym forum
Forum użytkowników Mac OS X na PC. Co to jest Hackintosh. Instalacja Mac OS X na PC z płyty Retail. Instalacja i opisy dystrybucji iDeneb, iPC, Kalyway, Leo4ALL, iAtkos.