Skocz do zawartości

Broadcom BCM5787M/BCM5784M i podobne


Astarael
 Udostępnij

Rekomendowane odpowiedzi

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:

IONameMatch

pci14e4,1659
pci14e4,166A
pci14e4,1693

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.1 uż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.2 uż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.3 modyfikacja 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:

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
           },

           "built-in",
           Buffer () 
           { 
           	0x01
           } 
       }, Local0) 
       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) 
       Return (Local0) 
   } 
}

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:

http://www.insanelymac.com/forum/index.php?showtopic=127903

 

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 :-P. 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:

http://osx86.co/f36/10-6-x-broadcom-nic-driver-for-bcm5754-t6946/

BCM5722D.kext.zip

BCM5787M.pkg.zip

BCM5787M (AppleBCM5701) for 10.6.3+.zip

BCM5787M (AppleBCM5701) for 10.6.2+.zip

Pci detection.kext.zip

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie
 Udostępnij

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystanie z tej witryny, wymaga zakceptowanie naszych warunków Warunki użytkowania.