All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Koldeweij <eric@no-sense.net>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] Qemu phone modem emulation
Date: Fri, 17 Aug 2012 21:26:06 +0200	[thread overview]
Message-ID: <502E9ACE.9020303@no-sense.net> (raw)

Hello all,

I am currently working on a serial telephone modem emulation 
implementation for Qemu. My question is if it would be a good idea to 
offer it for inclusion in the qemu main trunk when it's ready. These are 
the requirements I am working with:

- The modem device is accessible through a new option for a serial 
device. A new -serial option has been added (so far, might change in the 
future):
     -serial modem:[<listenIP>]:<listenPort>

- The modem device will emulate a generic serial modem using a 
Rockwell/Conexant RC144xxx chipset. The reasons I have chosen this 
chipset are:
     - It was extremely common in its time and you could argue it was 
the de facto modem standard.
     - It is supported by most if not all serial communications programs.
     - It was the chipset of the first cheap and easily available modems 
with Facsimile/Fax support.
     - I have quite some documentation on this chipset as well as the 
working hardware to compare it against.
     - Since speed is not an issue (there is no bandwidth limiter) there 
is no need to support higher speeds and standards, it's just more 
programming work.

- The modem will be able to receive "calls" on a telnet or telnet-like 
interface. The modem will generate the appropriate "RING" messages to 
the serial port. Serial data and Fax transmission/reception are going to 
be supported.

- The modem will be able to "dial out" to a telnet-like interface 
service. This includes of course a qemu modem device.
     - This is the biggest problem I am encountering so far: it is 
extremely difficult to embed an IP adress and port number into a legal 
"telephone number". Suggestions on how to solve this are more than welcome.
For instance: "ATDT127.0.0.1:14400" works fine now but the dot and colon 
are not allowed in the dial string. Also there is a line limit of 39 
characters for each modem command which makes IPv6 addresses a bit 
difficult to encode. Of course I can make it any way I like but a lot of 
software won't allow it entered as a telephone number either.

- If two qemu instances are "dialing" each other, a speed negotiation 
will take place using unused telnet IAC options in which speed 
capabilities, error-correcting and compression abilities are exchanged. 
This is purely cosmetic however and it is going to be disable-able :) If 
no options are exchanged the emulation will assume a 
can-do-anything-modem at the other side and connect with the highest 
speed as allowed by the settings.

- The emulated modem will not be able to talk to a real modem. Just in 
case it wasn't obvious.

- I am open for feature requests.

I am looking forward to comments. Thanks for your time.

Regards,
Eric Koldeweij.

             reply	other threads:[~2012-08-17 19:26 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-17 19:26 Eric Koldeweij [this message]
2012-08-18 17:19 ` [Qemu-devel] Qemu phone modem emulation Blue Swirl

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=502E9ACE.9020303@no-sense.net \
    --to=eric@no-sense.net \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.