No modem ? no problem.
If you don’t have a physical modem you can still get that retro vibe by accessing dn42 using the modem emulator service. This service presents a series of TCP/IP ports that emulate a subset of the Hayes AT command set and which are speed limited to specific baud rates. The modem can dial directly to the fr-par1 shell service for that CLI experience, or get full dn42 access via a PPP session.
The service is intended to be used as a fake serial port in a retro VM or connected to directly using a serial terminal.
- dialup.burble.dn42:(10000 + baud/100)
The modem emulator is accessed by connecting to dialup.burble.dn42 on ports corresponding to specific baud rates, as detailed in the table below.
Low baud rates give a great experience when using a serial terminal and the shell service but aren’t so much fun when using PPP. Conversely, using a serial terminal and higher baud rates is a bit dull and they are better suited to the PPP service.
The emulated modem is able to dial two services depending on the number used.
|54311||fr-par1 shell server|
|4242||PPP dialup service|
Use a terminal emulator and dial 54311 to access the fr-par1 shell server.
Once the modem connects, use your burble.dn42 username and password to log in.
You can set a burble.dn42 password using the services portal.
Don’t forget to set a terminal type once you’ve logged in, e.g.
- Dial 4242 to access the PPP server.
- Use username: dn42, password: dn42 to log in.
- Once you see the PPP initiation string, connect your PPP client.
- PPP authentication should not be required.
Example on how to connect to the shell server using socat and minicom at 2400 baud
$ socat -d -d pty,rawer tcp:dialup.burble.dn42:10024 & ... ... socat[xxx] N PTY is /dev/pts/2 ... $ minicom -D /dev/pts/2
Within minicom type ATDT54311 to dial the shell server.
Welcome to minicom 2.8 OPTIONS: I18n Port /dev/pts/2, 14:01:58 Press CTRL-A Z for help on special keys ATDT54311 CONNECT 2400 Ubuntu 22.04.1 LTS shell-fr-par1 login:
You can now log in using your burble.dn42 username and password.
Add a virtual serial port to QEMU using
e.g. for windows XP connecting at 115k
qemu-system-i386 -enable-kvm -cpu host -m 1024 -vga std -device AC97 -hda winxp.img -chardev socket,id=bdn42,port=11150,host=dialup.burble.dn42,server=off -device pci-serial,chardev=bdn42
Create a PPP dialup connection with username dn42 and password dn42, enable the option to prompt for username and password on connect.
Start the connection and when then chat box opens:
- Type ATDT4242 to dial the PPP service
- Log in using username dn42 / password dn42
- Hit continue when you see the PPP connect string
The following chat script provided by 04dco should provide automatic login for win95 onwards:
; ; This is a script file that automatically logs you in ; to establish a dn42 dial-up PPP connection. ; ; Main entry point to script ; proc main integer nTries = 3 ; This is the login prompt and timeout values string szLogin = "modem-server Login: " integer nLoginTimeout = 5 ; This is the password prompt and timeout values string szPW = "Password: " integer nPWTimeout = 5 ; This is the prompt once your password is verified string szPrompt = "Last login: " ; Attempt to login at most 'nTries' times while 0 < nTries do ; Wait for the login prompt before entering ; the user ID, timeout after x seconds waitfor szLogin then DoLogin until nLoginTimeout TryAgain: transmit "^M" ; ping nTries = nTries - 1 endwhile goto BailOut DoLogin: ; Enter user ID transmit $USERID, raw transmit "^M" ; Wait for the password prompt waitfor szPW until nPWTimeout if FALSE == $SUCCESS then goto TryAgain endif ; Send the password transmit $PASSWORD, raw transmit "^M" ; Wait for the prompt waitfor szPrompt goto Done BailOut: ; Something isn't responding. Halt the script ; and let the user handle it manually. set screen keyboard on halt Done: endproc
The modem emulator is a small golang server and the source code is available on the burble.dn42 git server