Omron SK20 MiniLSS Communication Timeout: Cable, COM, and DOS Fix

James Nishida14 min read
OmronSerial CommunicationTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Omron SK20 MiniLSS "Couldn't read LR-sizes" Communication Timeout: Cable, COM Port, and DOS Fix

The error Couldn't read LR-sizes followed by Communication time out when launching MiniLSS 1.x against an Omron mini SK20 PLC is almost always caused by one of three things: a wrong SP16 peripheral cable pinout, mismatched COM port settings, or MiniLSS failing to hold the UART while Windows 95 is multitasking. This article walks through each of those failure modes in the order they are most likely to be the culprit, with the exact DOS boot-disk procedure, COM1 verification steps, and a verification matrix to confirm a working link.

Legacy equipment notice. The Omron SP-series mini PLCs and MiniLSS software were discontinued in the late 1990s. They are 16-bit DOS applications and were never certified to run on Windows 95, 98, ME, or any NT-based Windows. The supported runtime is MS-DOS 6.22 or a compatible real-mode DOS 7.x. Modern USB-to-serial adapters are not drop-in replacements; see the COM port section.

1. Problem Statement

Reported by the field user (Windows 95 laptop, Fujitsu LifeBook 400 series, Pentium MMX 166/200 MHz, 48 MB RAM, COM1, MiniLSS 1.1 then 1.2, hand-built cable to mini SP16):

  1. MiniLSS starts.
  2. Software attempts to read the PLC's Link Relay (LR) area size at connection time.
  3. Dialog displays: Couldn't read LR-sizes and then Communication time out.
  4. Slowing the laptop CPU via CPUKILLER / similar utility does not change the result.

Because the failure happens at the very first read, MiniLSS never establishes a host-link session. The LR-size request is the first structured command the editor issues over the peripheral bus, which makes it an excellent built-in cable / port / settings canary.

2. Affected Hardware and Software

Item Value reported in case Notes
CPU Omron mini SK20 SP-series mini PLC family; uses peripheral port, not the later Host Link RS-232 port
Programming console Omron SP16 Handheld programmer; user is wiring directly to its I/O connector
Editor software MiniLSS 1.1 and 1.2 Omron Ladder Support Software, SP-series target, 16-bit DOS
Host OS Windows 95 4.00.950 / 4.00.950 B Not supported. Use DOS.
Host CPU Pentium MMX 166/200 MHz Adequate for DOS but Windows 95 COM stack is the problem
RAM 48 MB Sufficient
Serial port Built-in COM1 Native DB-9 UART is preferred over USB bridges
CPU throttling tool CPUKILLER / similar Masks a different issue; safe to remove

3. Root Cause Analysis

Three root causes must be ruled out, in this order, because they are ordered by probability and by how cheaply they can be verified:

  1. Wrong / hand-reversed cable pinout (most likely). The user built a cable to the SP16 themselves. A single crossed line, a missing ground, or a swapped handshake is enough to make every host-link command time out. MiniLSS reports this generically as LR-sizes read failure.
  2. COM1 is not actually COM1, or the UART address is non-standard. Some Lifebook 400 sub-models route COM1 through a flexible bay docking connector or assign it to a non-default IRQ. MiniLSS 1.x uses BIOS enumeration only; it does not scan PnP.
  3. Windows 95 owns COM1. Even with a correct cable, the Windows 95 COM driver buffers bytes and intercepts interrupts. MiniLSS 1.x talks directly to the 16550 UART at port 0x3F8. Windows 95 may not have placed the port at that address, or may have left a VxD holding the line.

The CPU throttling step is unrelated to baud-rate generation on a 16550 UART; it can be removed from the workflow.

4. Required Materials

  • Omron SP16 programming console (or direct SK20 peripheral port breakout).
  • DB-9 male to SP16 peripheral connector cable, verified against the pinout in section 5.
  • Working COM1 with confirmed 0x3F8 base address (built-in or pure-ISA card; PCMCIA serial cards are not reliable under DOS).
  • MS-DOS 6.22 boot floppy (or FreeDOS 1.x boot floppy).
  • MiniLSS 1.2 installation files copied to a second DOS-readable medium (hard-drive partition, second floppy, or DOS-mode USB stick if BIOS supports it).
  • Multimeter with continuity mode for cable verification.

5. SP16 Cable Pinout and Wiring

The mini SP16 peripheral connector is a round mini-DIN style connector on the SP16 handheld that exposes the SK20's peripheral bus. The PC end is a standard DB-9 female mating with COM1. The exact pin assignment varies by SP16 hardware revision; the table below is the documented host-link-style cross-over most SP-series cables implement. Verify every line with a continuity tester before powering the SP16; pin numbering is not standardized across early Omron accessories.

SP16 end (signal) DB-9 PC end (pin) Direction Purpose
SD (Send Data from PLC) 2 RXD PLC → PC Data out of SK20
RD (Receive Data into PLC) 3 TXD PC → PLC Data into SK20
RS (Request to Send) 7 RTS PC → PLC Handshake out
CS (Clear to Send) 8 CTS PLC → PC Handshake in
SG (Signal Ground) 5 GND Common Return path; mandatory
FG / Shield Shell Chassis Drain wire; one end only

Wiring rules specific to this case:

  • SD ↔ RD must be a cross (2 ↔ 3). A straight-through cable is the single most common cause of the LR-sizes timeout.
  • RS ↔ CS is also a cross (7 ↔ 8). Some hand-built cables omit the handshake and loop RTS to CTS at the PC end; this sometimes works on slow baud rates, but is unreliable at 19 200.
  • SG must be connected. A floating ground produces intermittent timeout exactly like the user's symptom.
  • FG (shield / drain) must be bonded at the PC chassis end only. Bonding at both ends creates a ground loop that biases the RS-232 thresholds and corrupts the LR-size read.
Verification step. With both ends disconnected from the PC and the SP16, ring out every pin from SP16 connector to DB-9 pin with a multimeter in continuity mode. Then ring SG to the SP16 shell to confirm the shield is not shorted to signal ground. This single check resolves the majority of "my homemade cable doesn't work" tickets on Omron SP equipment.

6. COM Port Configuration

MiniLSS 1.x does not provide a friendly COM-port dialog. It auto-detects COM1 at 0x3F8, IRQ 4. If the laptop's BIOS has remapped COM1 (some Lifebook docking configurations and some APM-aware BIOS revisions do this to free IRQ 4 for a docking-station serial chip), MiniLSS will still attempt 0x3F8 and fail to read the LR area.

6.1 Confirm the UART address from a clean DOS prompt

  1. Boot the DOS 6.22 floppy (procedure in section 7).
  2. At the A:\> prompt, run the DOS debug command to read the BIOS data area at 0x0040:0000, where COM port base addresses are stored:
A:\>DEBUG
-D 0040:0000 L0008

Expected output (16-bit little-endian, COM1 = 0x03F8, COM2 = 0x02F8, COM3 = 0x03E8, COM4 = 0x02E8):

0040:0000 F8 03 00 00 F8 02 00 00

If the first two bytes are not F8 03, COM1 is remapped. MiniLSS will not find the SK20.

6.2 Confirm the UART responds

  1. From the same DEBUG session, type:
-I 3F8

This reads the Receiver Buffer Register of COM1. A successful read returns a byte and increments the IP. If the system hangs or returns FF repeatedly, the UART is not at 0x3F8 or the chip is not decoding the I/O cycle.

6.3 Set the port parameters outside MiniLSS

MiniLSS sets 9 600 7-E-2 internally for the SP-series peripheral bus. If you want to verify the port with a terminal first, run a plain DOS terminal program (a shareware COMTEST or the FreeDOS CTTY) at:

COM1:9600,N,8,1

Then issue the Omron host-link @00RD test frame at 9 600, 7, E, 2 from the terminal. The PLC will not echo in 7-E-2; the verification is that no bytes are lost and no overrun errors appear. If you see overrun or framing errors, the cable is the problem even if MiniLSS is configured correctly.

USB-to-serial adapters. The FTDI and Prolific chips that ship in modern DB-9 cables emulate a 16550 at 0x3F8, but MiniLSS uses DOS-mode polled I/O with very tight timing. USB bridges introduce 1 ms+ latency that exceeds MiniLSS's inter-character timeout. Use a native DB-9 port or a real 16C550 ISA / PCI card.

7. DOS Boot Disk Procedure

MiniLSS is a real-mode DOS executable. It cannot share the COM port with the Windows 95 VCOMM driver. Booting DOS 6.22 directly (not a Windows 95 DOS box, not an MS-DOS-mode shortcut) is the only supported runtime.

7.1 Create an MS-DOS 6.22 boot disk from a Windows 95 host

  1. Insert a 1.44 MB floppy in drive A:.
  2. Open Control Panel → Add/Remove Programs → Startup Disk tab.
  3. Click Create Disk. Windows 95 builds a generic MS-DOS 6.22 boot floppy with IO.SYS, MSDOS.SYS, COMMAND.COM, FDISK.EXE, FORMAT.EXE, EDIT.COM, SYS.COM, and a minimal CONFIG.SYS / AUTOEXEC.BAT.
  4. Verify the disk boots. Leave the disk in drive A: and reset the laptop. The system must boot to A:\> with no Windows 95 banner.

7.2 Create an MS-DOS 6.22 boot disk from a modern Windows host

  1. Download a known-good MS-DOS 6.22 boot-image .img (or extract the Win9x OEM boot disk files from any Windows 98 SE recovery partition).
  2. Use Rufus in FreeDOS or DD Image mode to write the image to a 1.44 MB floppy or, more practically today, to a USB stick that the Lifebook BIOS can boot (most 400-series Lifebooks cannot boot USB; if yours cannot, use a USB floppy drive such as the Toshiba PA3109U-1FDD or a Y-E Data clone).

7.3 Prepare the MiniLSS media

  1. Copy the MiniLSS 1.2 folder structure to a second DOS-formatted floppy, or to a small FAT16 partition on the hard drive that the DOS boot does not mount as a Windows drive letter.
  2. Edit the boot floppy's CONFIG.SYS so it contains only:
FILES=30
BUFFERS=20
DEVICE=C:\DOS\HIMEM.SYS /TESTMEM:OFF
DOS=HIGH,UMB

Leave CONFIG.SYS free of any EMM386, RAMDRIVE, or third-party CD-ROM drivers. They re-map COM I/O and will silently break MiniLSS even if the cable and port are correct.

  1. Set AUTOEXEC.BAT to:
@ECHO OFF
PROMPT $P$G
PATH=C:\MINILSS;

Then C:\MINILSS\MINILSS.EXE is reached from any drive letter.

8. MiniLSS Configuration

On a clean DOS session with the verified cable connected and the SP16 docked on the SK20:

  1. Power the SK20 first; then connect the SP16; then launch MiniLSS.
  2. In MiniLSS, the online editor opens directly against the connected PLC when started with the /ONLINE switch:
A:\>MINILSS /ONLINE
  1. MiniLSS issues the @00RD family of host-link frames to enumerate the PLC's memory layout. The first read is the LR area size. A successful read returns the LR word count and the dialog advances. A failed read produces exactly the Couldn't read LR-sizes / Communication time out pair the user is seeing.

9. Step-by-Step Connection Procedure

  1. Power off the SK20.
  2. Connect the SP16 to the SK20 using the SP16's own captive cable.
  3. Connect the SP16's peripheral output to the PC's COM1 using the cable from section 5.
  4. Boot the DOS 6.22 floppy. Confirm A:\> prompt with no Windows banner.
  5. From DEBUG, confirm COM1 = 0x3F8 (section 6.1).
  6. Power on the SK20. Wait for the SP16 to display READY or similar.
  7. Run MINILSS /ONLINE.
  8. If MiniLSS displays LR-sizes timeout, go to section 10.
  9. If MiniLSS displays the project tree, the connection is good. Save the project, then power down in reverse order.

10. Troubleshooting Matrix

Symptom Most likely cause Fix
"Couldn't read LR-sizes" immediately, no retries Cable SD/RD not crossed Verify and re-pin DB-9 2 ↔ 3
Timeout, BIOS data area shows wrong COM1 address COM1 remapped by BIOS / dock Disable dock COM remap in BIOS, or use the undocked internal COM
Timeout, DEBUG read of 0x3F8 returns FF repeatedly No UART at 0x3F8, or PCMCIA card not bound in DOS Add an ISA / PCI serial card; remove PCMCIA
Timeout, framing errors visible on a 9 600 7-E-2 terminal Ground missing, shield on both ends, or 7-E-2 vs 8-N-1 mismatch Re-terminate shield at PC end only; set terminal to 7-E-2
Timeout only under Windows 95, fine under DOS VCOMM driver holding COM1 Boot DOS, never run MiniLSS from a Windows DOS box
MiniLSS freezes partway through LR-size read CPUKILLER / throttle utility active Remove the throttle; DOS polling on a 16550 is timing-critical
Timeout, Lifebook is connected through a port replicator Port replicator serial not wired to internal COM1 Use the side / rear native DB-9, not the replicator
Timeout with verified native COM1 + verified cable + DOS SP16 host-link baud rate overridden by DIP switch on SP16 Check SP16 DIP switches for 9 600 vs 19 200 default
MiniLSS opens but reports unknown CPU type Cable OK, MiniLSS 1.1 selected wrong CPU family Upgrade to MiniLSS 1.2, which knows SK20 specifically

11. Memory Area Reference for the LR Read

The LR-sizes request is a host-link frame that asks the SK20 how many Link Relay (LR) words it has. The SK20 LR area is a shared data region used in multi-PLC link groups; in a stand-alone SK20 it is still allocated and MiniLSS expects a non-zero size reply. If the SK20 returns 0 (LR area disabled in PLC setup) the editor may still report a timeout on early 1.x builds, so verify DM area word DM 6600 through DM 6614 in the SK20 setup (the standard Omron mini PLC default area) for the LR enable bits before declaring the link healthy.

For context, the SK20 standard area map is:

Area Type Range Notes
IR Internal / I/O Relay IR 000 – IR 029 Discrete I/O image
HR Holding Relay HR 00 – HR 09 Retentive bit area
LR Link Relay LR 00 – LR 07 8-word link area, the source of the timeout
TIM / CNT Timer / Counter TIM 00 – CNT 47 Shared pool
DM Data Memory DM 00 – DM 63 Word retentive data; setup lives here
AR Auxiliary Relay AR 00 – AR 27 Read-only diagnostics

12. Verification Checklist

  • Cable passes continuity test on every signal and SG.
  • Shield bonded to PC shell only, isolated from signal ground.
  • Lifebook is undocked; using native COM1.
  • DEBUG -D 0040:0000 L8 shows COM1 = F8 03 00 00.
  • DEBUG -I 3F8 returns a valid byte.
  • CONFIG.SYS has no EMM386 and no third-party COM drivers.
  • CPUKILLER / throttler removed.
  • MiniLSS 1.2 launched with /ONLINE from a clean A:\>.
  • LR-size read returns a non-zero count and the project tree opens.
  • A read of an IR bit (e.g. IR 000.00) round-trips in the online monitor.

13. Safety and ESD Notes for SK20 Work

The SK20 is an AC-input, relay-output PLC. Before seating or unseating the SP16, or hot-swapping the peripheral cable, kill the SK20's main breaker. The SP16 connector is not hot-pluggable in the field; the host-link transceiver on the SK20 can be damaged by an in-rush spike on the SP16's 5 V rail. ESD precautions (wrist strap, grounded mat) are appropriate when the SK20 is open on the bench.

What does the "Couldn't read LR-sizes" error actually mean in MiniLSS?

It means MiniLSS sent a host-link frame to the SK20 asking for the size of the Link Relay area and got no reply within the inter-character timeout. The reply never arrived, which MiniLSS surfaces as Communication time out. The LR area is the first structured field the editor queries, so a timeout there is the universal "I cannot talk to your PLC" indicator.

Can MiniLSS 1.1 or 1.2 run on Windows 95 at all?

No. Both are 16-bit DOS executables that drive the 16550 UART at I/O port 0x3F8 directly. Windows 95 owns COM1 through VCOMM, which buffers, delays, and occasionally drops characters. The only supported runtime is a clean MS-DOS 6.22 boot, with no Windows drivers, no EMM386, and no CPUKILLER-style utilities active. The Lifebook's 166/200 MHz Pentium MMX is more than fast enough once Windows 95 is out of the way.

What is the correct cable pinout between the Omron SP16 and a PC COM port?

SP16 SD goes to DB-9 pin 2 (RXD), SP16 RD goes to DB-9 pin 3 (TXD), SP16 RS to DB-9 pin 7 (RTS), SP16 CS to DB-9 pin 8 (CTS), and SP16 SG to DB-9 pin 5 (GND). Bond the cable shield to the DB-9 shell at the PC end only. This is the standard Omron host-link peripheral cross-over used across the SP family; verify every line with a multimeter before powering the PLC, because the round SP16 connector pin numbering has changed between SP16 hardware revisions.

Will a USB-to-serial adapter work with MiniLSS?

Generally no. FTDI and Prolific adapters emulate a 16550 and present COM1 at 0x3F8, but they add 1 ms+ USB polling latency. MiniLSS 1.x uses tight polled I/O loops and exceeds the inter-character timeout. Use a native DB-9 port on the Lifebook, or a real 16C550 ISA or PCI serial card. PCMCIA serial cards are also unreliable under DOS because their Card Services binding does not run in real mode.

How do I create a DOS 6.22 boot disk on a modern computer for the Lifebook 400?

Download a known-good MS-DOS 6.22 boot image (or extract one from a Windows 98 SE recovery partition), and write it to a 1.44 MB floppy with Rufus in DD Image mode, or to a USB stick if your Lifebook 400's BIOS supports USB boot (most 400-series do not). For machines that cannot boot USB, use a USB floppy drive such as the Toshiba PA3109U-1FDD. Edit CONFIG.SYS to keep only FILES=30, BUFFERS=20, and HIMEM.SYS; do not load EMM386 or any third-party COM drivers.

Back to blog