My arduino is used to drive a sun tracker, 30m from my home where I can observe good alignments and so on. So I needed to communicate (upload & serial monitoring) from 30 meters.
As it's only for quite a short period so I don't needed a fancy installation.
I used a laptop running ubuntu linux, connected via usb to arduino, and connected to my home wifi network. (wifi network include a repeater to have a decent connection)
The second computer where arduino IDE is also running ubuntu linux.
Here is what I did to make that work.
I installed ser2net on the laptop. Here is ser2net.conf config :
3002:raw:600:/dev/ttyACM3:115200 8DATABITS NONE 1STOPBIT 3003:raw:600:/dev/ttyACM3:9600 8DATABITS NONE 1STOPBIT
Note that ttyACM0 1 & 2 are already in used because laptop include 3G modem, GPS etc... Normally arduino is on /dev/ttyACM0
On the other computer side, I do the compilation from arduino IDE (ctrl+R), and I look for .hex path in the compiler output (in arduino ide preferenced, enable display detailed output for compile)
Then I run from terminal
avrdude -p m328p -c arduino -P net:192.168.0.19:3002 -Uflash:w:/tmp/build1891570887836564406.tmp/heliostat_v4.cpp.hex
Where you'll replace ip & port with the real one, and hex path.
It works really fine!
To communicate with arduino :
telnet 192.168.0.19 3003
I used a different port because basic communication was in 9600 bauds. I could harmonize everything to 115200 and use only one TCP port.
For information, from telnet for linux, to switch in character mode (so that each character is directly sent when typed without waiting for enter) type in telnet [ctrl]+[alt gr]+[)/°], and then 'mode character' [enter]
What I didn't manage to do : Use socat, create a virtual serial port, and use this port in arduino IDE. The virtual serial port created was working, but it's not visible in arduino IDE. I tried to look in source of arduino IDE, processing framework (processing.org), TXRX comm java library, how the the list of port was built, but I abandoned. For information, I use arduino ide 1.0.1, and I tried to name my virtual port /dev/ttyS5 as /dev/ttyS[0-9] seemed to be a pattern used to filter ports.
I don't need to solve this issue anymore, but if anyone have the information.. feel free to share.