Ovislink Airlive WL-1600GL Tomato DD-WRT //tomato 1.25, 1.25V, 1.27
|
obsy |
Dodano 29-11-2009 16:59
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
@lgolebio: tyle że nie wiem jak to jest w tomato robione. W openwrt jest to odczywtywane z nvram, ale w skryptach startowych mozna to zmienić (tak samo jak vlany czy interfejsy). Tu sprawa prosta - po prostu dla ovisa wykrywam czy jest ten domyślny ładowany, jeżeli tak to zamieniam to na ten właściwy.
Jak to jest w tomato?
|
|
|
|
lgolebio |
Dodano 29-11-2009 17:25
|
User
Posty: 145
Dołączył: 08/06/2006 12:35
|
W załączniku przesyłam Ci plik init.c, który należy zmodyfikować tak jak zawuażył MariusNM. Natomiast mi udało sie znalećć patch, podobnie wyglądającego pliku do firmware DD-WRT, który wnosi poprawki do odczytu mac adresu.
Tutaj jest ten patch. http://svn.dd-wrt.com:8000/dd-wrt/cha.../11544/src
Zwróć uwagę na linie od 1153 do 1185
Mam nadzieję, że to pomoże.
Edytowany przez lgolebio dnia 29-11-2009 17:25
|
|
|
|
obsy |
Dodano 29-11-2009 17:32
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
I to jest własnie to, masz gotowca
Z 1ffa0 jest odczytywany mac, ustawiana zmienna "et0macaddr" a później interfejs.
|
|
|
|
lgolebio |
Dodano 29-11-2009 17:38
|
User
Posty: 145
Dołączył: 08/06/2006 12:35
|
Owszem mam gotowca, ale próbowałem go zmodyfikować, żeby init.c wyglądał w ten sposób:
http://wklej.org/id/219482/
Niestety nie działa i proszę o ewentualne poprawki (tak jak napisałem nie jestem prorgamistą, robie na czuja) |
|
|
|
obsy |
Dodano 29-11-2009 17:48
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
case MODEL_WL1600GL:
mfr = "Ovislink";
name = "WL1600GL";
nvram_set("vlan0ports", "0 1 2 3 5*");
nvram_set("vlan1ports", "4 5");
nvram_set("manual_boot_nv", "1");
features = SUP_SES;
if( !nvram_match( "et0macaddr", "00:90:4c:c0:00:08" ) )
{
//fix mac
unsigned char mac[6]
FILE *in = fopen( "/dev/mtdblock/0", "rb" );
if( in != NULL ) //special sercom mac address handling
{
fseek( in, 0x1ffa0, SEEK_SET );
fread( mac, 6, 1, in );
fclose( in );
char macstr[32]
sprintf( macstr, "%02X:%02X:%02X:%02X:%02X:%02X",
( int )mac[0] & 0xff, ( int )mac[1] & 0xff,
( int )mac[2] & 0xff, ( int )mac[3] & 0xff,
( int )mac[4] & 0xff, ( int )mac[5] & 0xff );
nvram_set( "et0macaddr", macstr );
eval( "ifconfig", "eth0", "hw", "ether", macstr );
}
}
Zobacz jeszcze czy w tomato jest /dev/mtdblock/0 czy to się inaczej jakoś nazywa.
Edytowany przez obsy dnia 29-11-2009 17:48
|
|
|
|
lgolebio |
Dodano 29-11-2009 18:29
|
User
Posty: 145
Dołączył: 08/06/2006 12:35
|
Niestety nie działa, skompilowałem i wgrałem ale dalej jest ten głupi mac ustawiany
Tak jest tam taka partycja /dev/mtdblock/0. |
|
|
|
obsy |
Dodano 29-11-2009 18:41
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
To sprawdź co robi nvram_match
bo być może chciałeś
if (nvram_match( "et0macaddr", "00:90:4c:c0:00:08" )
jezeli et0macaddr jest równy 00:90:4c:c0:00:08 to...
|
|
|
|
lgolebio |
Dodano 29-11-2009 18:55
|
User
Posty: 145
Dołączył: 08/06/2006 12:35
|
Nie bardzo rozumiem co masz na myśli ? |
|
|
|
obsy |
Dodano 29-11-2009 18:56
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
Zmien linię
if( !nvram_match( "et0macaddr", "00:90:4c:c0:00:08" ) )
na
if(nvram_match( "et0macaddr", "00:90:4c:c0:00:08" ) )
Sądząc po nazwie funkcji zwraca ona true jak się mac zgadza, a wtedy właśnie masz podmienić go na właściwy.
|
|
|
|
MariuszNM |
Dodano 29-11-2009 19:00
|
User
Posty: 167
Dołączył: 18/11/2009 07:28
|
witam po przerwie.
@lgolebio spróbuj jako plik użyć "/dev/mdt/0ro"
i spróbuj bez ! w if(.
Edytowany przez MariuszNM dnia 29-11-2009 19:05
|
|
|
|
lgolebio |
Dodano 29-11-2009 19:03
|
User
Posty: 145
Dołączył: 08/06/2006 12:35
|
@MariuszNM ale co do tego wykrzyknika przy nvram_match, wstawić go czy nie ?
OK
Edytowany przez lgolebio dnia 29-11-2009 19:05
|
|
|
|
MariuszNM |
Dodano 29-11-2009 19:06
|
User
Posty: 167
Dołączył: 18/11/2009 07:28
|
nie wstawiać. ma być bez ! |
|
|
|
obsy |
Dodano 29-11-2009 19:07
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
No właśnie
|
|
|
|
MariuszNM |
Dodano 29-11-2009 19:24
|
User
Posty: 167
Dołączył: 18/11/2009 07:28
|
tylko jeszcze jedna sprawa mi się niepodoba bo w cfe.bin który mi przysłałeś w części jawnej były dwa adresy jeden dla et0 drugi dla il0
et0macaddr=00:90:4c:c0:00:08
il0macaddr=00:90:4c:c1:00:08
wydaje mi się że ten drugi też trzeba zmienić
Edytowany przez MariuszNM dnia 29-11-2009 19:27
|
|
|
|
obsy |
Dodano 29-11-2009 19:27
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
Bo tak jest. I to właśnie się przepisuje do nvram jak nie ma zmiennych tam. W moim pożyczaku też tak jest.
|
|
|
|
lgolebio |
Dodano 29-11-2009 19:37
|
User
Posty: 145
Dołączył: 08/06/2006 12:35
|
Niestety nie działa, może coś napierdzieliłem w init.c, dlatego dam go wam do przejrzenia.
ftp://81.168.251.139/Kuba/init.c
Edytowany przez lgolebio dnia 29-11-2009 19:39
|
|
|
|
MariuszNM |
Dodano 29-11-2009 19:38
|
User
Posty: 167
Dołączył: 18/11/2009 07:28
|
moja propozycja
case MODEL_WL1600GL:
mfr = "Ovislink";
name = "WL1600GL";
nvram_set("vlan0ports", "0 1 2 3 5*");
nvram_set("vlan1ports", "4 5");
nvram_set("manual_boot_nv", "1");
features = SUP_SES;
{
int etch, ilch;
etch=nvram_match( "et0macaddr", "00:90:4c:c0:00:08" );
ilch=nvram_match( "il0macaddr", "00:90:4c:c1:00:08" );
if( etch || ilch )
{
//fix mac
unsigned char mac[6]
char macstr[32]
FILE *in = fopen( "/dev/mtd/0ro", "rb" );
if( in != NULL ) //special sercom mac address handling
{
fseek( in, 0x1ffa0, SEEK_SET );
fread( mac, 6, 1, in );
fclose( in );
if(ilch)
{
sprintf( macstr, "%02X:%02X:%02X:%02X:%02X:%02X",
( int )mac[0] & 0xff, ( int )mac[1] & 0xff,
( int )mac[2] & 0xff,( ( int )mac[3]+1) & 0xff,
( int )mac[4] & 0xff, ( int )mac[5] & 0xff );
nvram_set( "il0macaddr", macstr );
//eval( "ifconfig", "eth0", "hw", "ether", macstr );
}
if(etch)
{
sprintf( macstr, "%02X:%02X:%02X:%02X:%02X:%02X",
( int )mac[0] & 0xff, ( int )mac[1] & 0xff,
( int )mac[2] & 0xff, ( int )mac[3] & 0xff,
( int )mac[4] & 0xff, ( int )mac[5] & 0xff );
nvram_set( "et0macaddr", macstr );
eval( "ifconfig", "eth0", "hw", "ether", macstr );
}
}
}
}
Edytowany przez MariuszNM dnia 29-11-2009 19:49
|
|
|
|
MariuszNM |
Dodano 29-11-2009 19:42
|
User
Posty: 167
Dołączył: 18/11/2009 07:28
|
@lgolebio - spróbuj wyczyścić nvram |
|
|
|
lgolebio |
Dodano 29-11-2009 19:43
|
User
Posty: 145
Dołączył: 08/06/2006 12:35
|
Już widzę, jest błąd ! Zamiast "mtd" jest "mdt" poprawiłem i kompiluję. |
|
|
|
MariuszNM |
Dodano 29-11-2009 19:47
|
User
Posty: 167
Dołączył: 18/11/2009 07:28
|
i użyj
FILE *in = fopen( "/dev/mtd/0ro", "rb" ); |
|
|