Ethernet Testing
The documentation on Ethernet is somewhat lacking, so I'm putting together this page as a reference for getting started quickly with Ethernet.
You'll want to download my EthernetTester, which uses DHCP and serves a sample web page, as well diagnostic LEDs and output over serial.
EthernetTester
Rolf's page is a good reference: http://mbed.org/users/rolf/notebook/ethernet/
Much of this page is from his page.
Buying Parts
In addition to the mbed, you'll want to get the following, unless you are just cutting up an ethernet cable:
Sparkfun Part#
PRT-08534 RJ45 Ethernet MagJack
PRT-08790 RJ45 Ethernet MagJack Breakout
Digkey Part#
BC1160CT-ND CAP .10UF 50V CERAMIC +80/-20% (x2)
P150BACT-ND RES 150 OHM CARBON FILM 1/4W 5% (x2)
S1012E-36-ND CONN HEADER .100 SINGL STR 36POS
Getting Connected
Since the mbed conveniently has a Ethernet PHY, you only need to connect the RD+ RD- TD- and TD+ pins to either an Ethernet jack or cable. Ideally, you would get a jack with a transformer (magnetics) as this extends the range of cable you can use, protects the mbed from fluctuations, and is absolutely necessary if you are connecting to a PoE system (you'll fry your mbed otherwise!).
Using a cable
Strip a wire, a connect the following (assuming a straight, non-crossover cable):
Green = RD+
Green/White = RD-
Orange = TD+
Orange/White = TD-
Using a Magnetic Jack
You'll want, in addition to the magnetic jack, two decoupling capacitors, about 0.1uF, if you're ordering from DigiKey, part BC1160CT-ND will work perfect, at a whopping 6 cents a piece. They're useful for noise control, so you might as well order 10 (the minimum). If you don't have the capacitors, the jack will still work fine... you might have problems with some cable lengths.
I recommend getting the MagJack from SparkFun (PRT-08534), it's apparently the cheapest source, at about $2 with integrated status LEDs. If you do get one from SparkFun, you might as well pick up the breakout board for a dollar more. It'll probably save you lots of painful time trying to solder wires onto a jack, though it takes up a bit of space on the board.
Here's a quick schematic of how things need to be connected:
Connect the following on the SparkFun jack (for other jacks, see Rolf's page):
p1 = RD+
p2 = RD-
p7 = TD-
p8 = TD+
You also need to connect the transformers to +3.3V and also connect a decoupling capcitor between the transformer and ground.
The transformers are on:
p3 = RD0
p6 = TD0
So connect RD0 and TD0 to +3.3V, and also place one 0.1uF capacitor each between them and ground.
Status Lights
The EthernetTester program displays status on LED1-LED4, as well as on p29, p30. If you have a magnetic jack with status lights, connect them to the jack, otherwise, connect them to some indicator LEDs. The assignment of the LEDs are:
p29 = Activity (not used)
p30 = Link
LED0 = Stage 0 (Setting up lwip)
LED1 = Stage 1 (Waiting for DHCP)
LED2 = Stage 2 (Ready to serve pages)
LED3 = Serving an HTTP page
Be sure to use a current-limiting resistor (I used 150 ohms for the SparkFun MagJack).
Running the program
After you have everything wired up, open a serial console, and you should see some status text. After a few seconds, if everything worked out fine, you should get an IP address on the console. Type the IP address in your browser (i.e. http://192.168.1.100) and you should see a test page, with the RTC time, your hardware address, and the current IP address. You'll also see the requests from your browser in the serial console.
Thanks for posting this! It couldn't have come at a better time (for me!). This helps alot...
Any word on how to configure for static IP?
Thanks for posting this! It couldn't have come at a better time (for me!). This helps alot...
Any word on how to configure for static IP?
Yeah,
Edit the lines:
IP4_ADDR(&netmask, 255,255,255,255);
IP4_ADDR(&gateway, 0,0,0,0);
IP4_ADDR(&ipaddr, 0,0,0,0);
To your desired configuration.
Then, replace
dhcp_start(netif); // <-- Use DHCP
with
netif_set_up(netif);
Ahhh.. I missed the netif_set_up(netif);
Thanks a bunch!! This is a great help!!
Michael, if you don't mind my asking... How would one initiate a connection via a specific port to a specific IP address and send a small string to another device using this?
I'm not sure that you'll fry an mbed by connecting it to a PoE enabled system. From the little reading I've done on it PoE is only applied after a discovery process (http://www.gocsc.com/uploads/white_papers/59AC05CD861A40CC836B2F85B4DC2BAA.pdf indicates that PoE enabled devices check for the presence of a 25k resistor before applying 48V). Is there some part of the PoE system that I'm missing?
Thanks for posting the application and the tutorial!
I am trying this with the LPCExpresso base board which has the RJ45 installed. Something is not right here:
Starting Up...
Configuring device for DHCP...
Interface is up, local IP is 192.168.1.103
Starting Web Server...
Waiting for connection...
But I do not get a web page or any messages. Led4 is off, all others on. There were no errors posted; just a warning mem_sem was not used.
Any ideas as to where to look?
Hello Michael,
This is the best Ethernet tutorial.
Thank you,
Abraham
Hi,
I tried importing this and keep getting an svn error.
Is there something wrong or just a problem with mbed compiler?
Cheers,
Paul
Hi Paul,
Something is not happy there; we'll investigate.
FYI, Donatien did some good work on ethernet if you look in the new cookbook; that may be a better place to look for some newer and more stable examples.
Simon
Hi Paul,
This is now fixed!
Simon
#
09 Oct 2010 . Edited: 09 Oct 2010
Hello
I have the sparkfun breakout board for the Magjack and have connected it as described in the above information (good article), but I cannot seem to get the mbed to communicate on ethernet. The program compiles and loads without errors, but seems to hang with the second led on mbed flashing. Using wireshark to watch the ethernet, there is no dchp request being sent from mbed. Any suggestions as to where to look would be greatly appreciated.
Thanks
George
#
07 Feb 2011 . Edited: 07 Feb 2011
Had the same problem as Rick Drolet,
I've entered the given IP in my browser, but I just get a blank page. As Rick said, the first 3 leds are on, the 4th is off. Also, the ledLink is on, ledActivity is off.
Starting Web Server...
Waiting for connection...
Edit: I'm using Ubuntu10.10.
Edit2: Ah, fixed. Due to shortage of ethernet cables I had the PC I was browsing on, running on my HTC network, on 3G. Pretty obvious.
So, Rick, do you have your MBED and PC on the same network? In the same router or HUB or whatever? If so, you have to enter the given IP adress in your browser. And BAM:
Congratulations!
If you can see this page, your mbed is working properly.
mbed Configuration
mbed RTC time:Sun Jan 1 00:00:00 1900 (very up to date xD)
...
Cheers,
Melchior
Thank you for the hint! Seems so obvious...
Yes, same MBED and PC on the same network & Router. I really don't remember what exactly I was doing.
I need to remount my MBED development to give this a try.
#
22 Feb 2011 . Edited: 22 Feb 2011
Thanks, I needed this information, especially the static IP stuff!
#
28 Apr 2011 . Edited: 18 May 2011
Hello Melchior, Rick, and Michael Wei
mBed Ethernet Tester 1.0
Starting Up...
Configuring device for DHCP...
Interface is up, local IP is 192.168.1.128
Starting Web Server...
Waiting for connection...
Can you guide me how to configure the ip or how to setup? I'm using cross cable direct connect the Mbed to my PC and i'm using Wifi modem..I'm open my browser and type the IP (192.168.1.128), i do not get the web page. It shown
Oops! Google Chrome could not connect to 192.168.1.128
and LED1, LED2, and LED3 is turn ON. LED4 is OFF.
Thank you
Wen
#
19 May 2011 . Edited: 19 May 2011
Hello Dear All,
I did solved my problem. Following is there setting that we need to follow.
Have a nice day.
Bst Rgds,
Wen
Hi folks,
am connecting my mbed directly to the PC (apache websever installed) through ethernet,
I typed 'ipconfig' on command prompt it gives - 169.254.235.49 could this correct mbed ip address?
else how do I know the correct mbed IP address?
Pls help
Hi Micheal,
Something has gone badly wrong here - I have imported this program and when I try to compile it I get 695 errors!
What on Earth am I doing wrong???
Martin
Hi Micheal,
Something has gone badly wrong here - I have imported this program and when I try to compile it I get 695 errors!
What on Earth am I doing wrong???
Martin
I am facing the sane problem but getting half the number of errors.
Can someone please help out?
Hi michael i need your help. In the mbed ethernet official page the configuration of the pins for PRT-08534 are the follow:
1 TD+
2 TD-
3 3.3V
4 NC
5 NC
6 3.3V
7 RD+
8 RD-
As you can see there are diferent that the one you put here for the same connector. Im a little confuse. What is the correct configuration for this connector?, i want my mbed to simulate a pc that has a public ip (im using the breadboard adapter for this connector too)
Greetins please help me i dont want to damage the rd+rd-td+td- pins of the mbed connecting something wrong
Has anyone figure out why the imported program raises >600 errors whilst compiling as I’m having the same issues as shown above.
Help would be greatly appreciated?
#
21 Jan 2013 . Edited: 21 Jan 2013
Has anyone figure out why the imported program raises >600 errors whilst compiling as I’m having the same issues as shown above.
Help would be greatly appreciated?
I ran into the same problem. It is caused by folder names containing a dot. I sent a message to the mbed staff and posted the issue on http://mbed.org/forum/mbed/topic/83/?page=1#comment-20881. Will post back as soon as i get more info.
#
27 Dec 2013 . Edited: 27 Dec 2013
Hello I
tried to import this program but if i compile I'll get this
Error: Function "time(std::time_t
*)" conflicts with using-declaration of function
"std::time(std::time_t *)" in
"extras/mbed_00a04e5cd407/rtc.h", Line: 32, Col: 8
and this
Warning: The format string ends before this
argument in "lwip/examples/purehttpc/main.cpp", Line: 51, Col: 9
Can anybody help me with this?
#
27 Dec 2013 . Edited: 27 Dec 2013
You need to log in to post a comment
Thanks for posting this! It couldn't have come at a better time (for me!). This helps alot...
Any word on how to configure for static IP?