Witam,
Jako, że zostało mi niespełna 3,5 tygodnia do matury, postanowiłem pobawić się z AVR'kami i dopieścić co nieco w kodzie.
Napotkałem na bardzo dziwny problem z przydzielaniem adresów sieciowych po DHCP.
Mianowicie, DHCP działa tylko z serwerem dhcp3-server (na Fedora14) na komputerze. Nie współpracuje z routerami HUAWEI B970 i Linksys. Po wysłaniu DHCP-OFFER nic się nie dzieje. Karta nie odbiera lub nie akceptuje pakietów DHCP-OFFER. Możliwe też, że router w ogóle ich nie wysyła.
Zanim zacznę kroić kable i podsłuchiwać transmisję miedzy routerem a ENC28J60 chciałem zasięgnąć rady u fachowców.
Na poniższym kodzie zamieszczam logi po włączeniu mikrokontrolera, jest on podłączony do komputera.
Jak widać serwer wysyła DHCP-OFFER i otrzymuje od komputera odpowiedź. Wszystko przebiega pomyślnie i ustawiany jest adres z puli 10.0.0.200.
Połączenie z internetem również jest.
W załączniku zamieszczam zrzut pakietów z Wireshark.
Pakiet DHCP-OFFER wysyłany przez AVR.
Po podłączeniu do routera z DHCP, nic się nie dzieje. Na poniższym logu widać, jak AVR wysyła DHCP-OFFER i nie otrzymuje nic (to jest żadnego pakietu).
Serwer w wyniku braku odpowiedzi DHCP ustawił adresy z konfiguracji statycznej. Nie ma połączenia z internetem.
Tekst "PACKET RECEIVED" jest wysyłany przy odebraniu jakiegokolwiek pakietu przez kartę sieciową. Być może karta filtruje pakiety. Dlatego zamieszczam konfiguracje ENC28J60:
Jeżeli dobrze wyczytałem w nocie to taka konfiguracja wpuszcza wszystko, poza pakietami o zbyt dużym rozmiarze.
Na razie nie mam jak podsłuchać komunikacji między ENC28J60 a AVR; moja pracowania cierpi na deficyt kabli sieciowych. Jak tylko się dorobię to spróbuje zrobić kabel-gwiazdę.
No i na koniec:
Czemu to tak jest? Co robię źle?
Jako, że zostało mi niespełna 3,5 tygodnia do matury, postanowiłem pobawić się z AVR'kami i dopieścić co nieco w kodzie.
Napotkałem na bardzo dziwny problem z przydzielaniem adresów sieciowych po DHCP.
Mianowicie, DHCP działa tylko z serwerem dhcp3-server (na Fedora14) na komputerze. Nie współpracuje z routerami HUAWEI B970 i Linksys. Po wysłaniu DHCP-OFFER nic się nie dzieje. Karta nie odbiera lub nie akceptuje pakietów DHCP-OFFER. Możliwe też, że router w ogóle ich nie wysyła.
Zanim zacznę kroić kable i podsłuchiwać transmisję miedzy routerem a ENC28J60 chciałem zasięgnąć rady u fachowców.
Na poniższym kodzie zamieszczam logi po włączeniu mikrokontrolera, jest on podłączony do komputera.
Cytat:1WIRE FOUND: 0
Note: UDP open port 68
DISCOVER sent
DISCOVER sent
** DHCP OFFER RECVD! **
REQUEST sent
** DHCP ACK RECVD! **
LEASE 0 0 258
USING DHCP
Sending ARP request
PACKET RECEIVED
ARP reply
Sending ARP request
PACKET RECEIVED
ARP reply
Compiled at Apr 12 2011 at 19:22:03
Compiled on GCC version 4.5.1
IP: 10.0.0.200
MASK: 255.255.255.0
GATE: 10.0.0.1
NTP: 192.168.0.1
MAC: 44:41:4D:49:41:4E
Note: UDP open port 6000
Sending ARP request
PACKET RECEIVED
ARP reply
NTP REQUEST
TCP: Listening on port 65535
TCP: Outcomming connection on port 65534
Note: TCP change port 65535 to 65534
GG: Listening on port 65534
PACKET RECEIVED
GG: Connected!
PACKET RECEIVED
GG: New data
Jak widać serwer wysyła DHCP-OFFER i otrzymuje od komputera odpowiedź. Wszystko przebiega pomyślnie i ustawiany jest adres z puli 10.0.0.200.
Połączenie z internetem również jest.
W załączniku zamieszczam zrzut pakietów z Wireshark.
Pakiet DHCP-OFFER wysyłany przez AVR.
Po podłączeniu do routera z DHCP, nic się nie dzieje. Na poniższym logu widać, jak AVR wysyła DHCP-OFFER i nie otrzymuje nic (to jest żadnego pakietu).
Cytat:1WIRE FOUND: 0
Note: UDP open port 68
DISCOVER sent
DISCOVER sent
DISCOVER sent
DISCOVER sent
DISCOVER sent
DISCOVER sent
DISCOVER sent
DISCOVER sent
DISCOVER sent
DISCOVER sent
DISCOVER sent
DHCP timeout
DHCP FAILED
Sending ARP request
Sending ARP request
Compiled at Apr 12 2011 at 19:22:03
Compiled on GCC version 4.5.1
IP: 192.168.1.15
MASK: 255.255.255.0
GATE: 192.168.1.1
NTP: 192.168.0.1
MAC: 44:41:4D:49:41:4E
Note: UDP open port 6000
Sending ARP request
NTP REQUEST
TCP: Listening on port 65535
TCP: Outcomming connection on port 65534
Note: TCP change port 65535 to 65534
GG: Listening on port 65534
TCP 0: TIMEDOUT
GG: Server not responding
Serwer w wyniku braku odpowiedzi DHCP ustawił adresy z konfiguracji statycznej. Nie ma połączenia z internetem.
Tekst "PACKET RECEIVED" jest wysyłany przy odebraniu jakiegokolwiek pakietu przez kartę sieciową. Być może karta filtruje pakiety. Dlatego zamieszczam konfiguracje ENC28J60:
Kod: C / C++
Jeżeli dobrze wyczytałem w nocie to taka konfiguracja wpuszcza wszystko, poza pakietami o zbyt dużym rozmiarze.
Na razie nie mam jak podsłuchać komunikacji między ENC28J60 a AVR; moja pracowania cierpi na deficyt kabli sieciowych. Jak tylko się dorobię to spróbuje zrobić kabel-gwiazdę.
No i na koniec:
Czemu to tak jest? Co robię źle?
