Connecting an HP-48SX to a USB Port with Linux Mint

The HP-48SX calculator was designed to connect to a personal computer running MS-DOS to allow variables and programs to be transferred between the computer and calculator. The connection was between serial ports on the computer and calculator, and used the Kermit transfer program. Modern computers do not run MS-DOS or have serial ports. This post explains how to connect an HP-48SX to a computer running Linux that has USB ports rather than serial ports.


Hardware Used in this Article


Calculator: HP-48SX ROM Version E

USB/Serial Adapter Cable: Samson Cables HP48G/GX/SX USB Cable 

Computer: Dell Inspiron 5567

Operating System: Linux Mint 18.3 Cinnamon 64-bit

Cinnamon Version: 3.6.6


Connecting USB/Serial Adapter Cable to computer


1) Connect USB/Serial Adapter Cable to USB port on computer.

2) Open terminal window on computer.

3) Run dmesg from command line.

admin@server ~ $ dmesg

4) Find line like this in dmesg output:

usb 1-2: new full-speed USB device number 7 using xhci-hcd.

5) Disconnect USB/Serial Adapter Cable from computer.

6) Run lsusb from command line:

admin@server ~ $ lsusb

7) Connect USB/Serial Adapter Cable to USB port on computer.

8) Run lsusb from command line again:

admin@server ~ $ lsusb

9) Note new line in lsusb output:

Bus 001 Device 008: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge/myAVR mySmartUSBlight

10) From new line in lsusb output, determine vendor ID and product ID of USB/Serial Adapter Cable. In this case, vendor ID is 10c4 and product ID is ea60.

11) Run modprobe from command line as root using previously determined vendor ID and product ID:

admin@server ~ $ sudo modprobe usbserial vendor=0x10c4 product=0xea60

12) Note lines in modprobe output. Note port ID, in this case ttyUSB0:

cp210x 1-2:1.0:cp210x converter detected

usb 1-2: converter now attached to ttyUSB0.


Configuring C-Kermit


1) Connect HP-48SX to USB/Serial Adapter Cable.

2) Put HP-48SX in Kermit server mode.


3) Run C-Kermit from command line as root.

admin@server ~ $ sudo kermit

4) Configure C-Kermit.

(/home/admin/) C-Kermit>set prefixing all

(/home/admin/) C-Kermit>set modem type direct

(/home/admin/) C-Kermit>set line /dev/ttyUSB0

(/home/admin/) C-Kermit>set speed 9600

(/home/admin/) C-Kermit>set carrier-watch off

(/home/admin/) C-Kermit>set flow none

(/home/admin/) C-Kermit>set parity none

(/home/admin/) C-Kermit>set block 3

(/home/admin/) C-Kermit>set control prefix all


Transferring files


1) To transfer files from computer to HP-48SX,

(/home/admin/) C-Kermit>send [filename]

2) To transfer files from HP-48SX to computer,

(/home/admin/) C-Kermit>get [filename]

3) Files for HP-48SX on computer begin with the header

%%HP: T(1)A(D)F(.);


References


Comments

  • To get a human-readable name for the device (not just ttyUSB<number>) you can create an udev rule.

    As root make a new file /etc/udev/rules.d/80-my-serial-port.rules

    KERNEL=="ttyACM*|ttyUSB*", ACTION=="add|change", SUBSYSTEMS=="usb", \

      ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",  ATTRS{serial}=="1234567", \

         GROUP="dialout", MODE="0664", \

         SYMLINK+="ttyHPCALC", \

         ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_CANDIDATE}="0"

    Here the first line tells udev when to process the rest of the command. The second line identifies the product (the serial number check is useful when you have two or more of the same device). The third line sets the permissions. The fourth line gives the symbolic name, here /dev/ttyHPCAL and finally the fifth line tells the system not to attempt to detect a Hayes-compatible modem on this port.

  • If you are playing with Kermit on the HP48, you might like these tiny programs from Datafile V10N4P3:


Sign In or Register to comment.