Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You really, really want to play with this for yourself, if just for two minutes.

It takes <5 seconds to compile from source. However, I'd recommend you

  $ ./configure --without-pulseaudio
as PA really, really chews CPU when used as the audio pipeline for this. However, if your soundcard isn't set up for (or capable of) loopback audio, you might need to use PA.

From there, it's just a simple case of

  $ cat walloftext.doc | ./minimodem --tx --tx-carrier 1200
in one terminal while you

  $ ./minimodem --rx 1200 -q
in the other. (Start the receiver first.)

My (very) old laptop seems to be able to go up to 9600 baud (sans PA); beyond 10000 it completely falls apart, with literal (!) modem line noise in the data (looks hilarious), ALSA underruns on the transmit end and 100% CPU usage between the two processes. (Hardware from != 2006 will probably be able to go much much higher though.)

This is an extremely simple modem implementation: it's just stdio<->DSP, with nothing else on top. And of course it's not bidirectional, so you need one process for input and another for output. You'd need two copies each running on both sides of a link for full duplex. And then you'd need a tunnel interface on top of that to get a PHY, and probably PPP over the top of that for low-level retransmission and flow control. (The major additional missing piece would have to be that real modems "train" to find the best baud rate and audio characteristics to use for the link. This of course has none of that. You have to figure out the best the best link speed yourself.)

Having said all that... I just learned how fast 9600 baud really is. That was absolutely awesome.

I also discovered that 600 baud is kind of hypnotic to listen to and watch. lol

And now I'm wondering about socat...



Even for a decade old computer 9.6k feels surprisingly low, considering that we were pushing 56k on softmodems far earlier.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: