Tune PLIP Timing Safely with plipconfig
You will inspect a PLIP interface, change its runtime nibble or trigger wait, and verify the result without guessing whether the hardware supports the request. Allow about fifteen minutes for a live link, including a small test transfer. The examples use plipconfig from Ubuntu's net-tools package, version 2.10-0.1ubuntu4.4, with the upstream program reporting version 2.10.
The route
Jump straight to the step you need, or tick off Done means at the end.
PLIP is the old parallel-port IP driver. You need an already configured PLIP interface at both ends of the link, a cable that is already working, and an account able to use the network device. Reading status is normally unprivileged; changing the driver settings may require root or the relevant network administration privilege.
1. Confirm the installed command
Check the binary and its package before changing anything. These are read-only commands:
$ command -v plipconfig
/usr/sbin/plipconfig
$ dpkg-query -W -f='${Package} ${Version}\n' net-tools
net-tools 2.10-0.1ubuntu4.4
$ plipconfig --version
net-tools 2.10
John Paul Morrison, Alan Cox et al.
The command accepts one interface name, followed by the optional words nibble and trigger. Do not assume that a modern Ethernet interface is suitable. Use the exact PLIP interface name configured on this host, such as plip0 or plip1.
2. Read the current timing
Replace PLIP_INTERFACE with the real interface name. Supplying only that name asks the driver for its current values and does not change them:
$ plipconfig PLIP_INTERFACE
PLIP_INTERFACE nibble CURRENT_NIBBLE trigger CURRENT_TRIGGER
The actual numbers are supplied by the driver, so the output above is a shape rather than a literal result to copy. Record both values. The documented defaults are 3000 microseconds for nibble and 500 microseconds for trigger, but the device's current values are the useful baseline.
Checkpoint
If this reports ioctl: Operation not supported, the named interface is not accepting PLIP's private driver request on this machine. Stop here. If it reports ioctl: No such device, correct the interface name or configure the device before trying to tune it.
3. Choose one small timing change
The manual says that lowering the waits can sometimes improve speed, but it also warns about higher CPU use, poorer interrupt response, serial characters being dropped and PLIP packets being lost. Make one modest change at a time. Do not copy an aggressive value from another machine: parallel-port hardware, cable length and CPU speed all affect the result.
For example, if the status command reported nibble 3000 and trigger 500, prepare a conservative trial by changing only the nibble wait:
$ sudo plipconfig PLIP_INTERFACE nibble 2500
PLIP_INTERFACE nibble 2500 trigger 500
Both timing values are in microseconds. The command first obtains the current settings and then submits the requested values. Treat the displayed line as confirmation of what the utility read back, not as proof that a packet transfer is healthy.
This is a live kernel setting, not a permanent configuration file. It can disrupt an active PLIP transfer. Warn anyone using the link before applying it, and do not run it during a critical transfer.
4. Verify the setting and the link
Read the interface again, without sudo unless your system requires it:
$ plipconfig PLIP_INTERFACE
PLIP_INTERFACE nibble 2500 trigger 500
Then perform the same small, repeatable transfer or connectivity test you used before the change. Compare packet loss, transfer time and CPU use. A faster result with dropped packets is a failed tuning attempt. If the second end of the link is available, make the same change there only after recording its baseline, and test both directions.
There is no output from plipconfig that measures throughput. Use a separate transfer or network test and keep its method consistent. If the link stops responding, check the PLIP interrupt assignment and interface configuration with the normal network tools. The manual specifically points to an incorrect IRQ as a more likely cause than timing that is too fast. Do not change the IRQ just because a timing experiment failed.
5. Restore the recorded values
To undo the trial, submit the values you recorded in step 2:
$ sudo plipconfig PLIP_INTERFACE nibble ORIGINAL_NIBBLE trigger ORIGINAL_TRIGGER
PLIP_INTERFACE nibble ORIGINAL_NIBBLE trigger ORIGINAL_TRIGGER
$ plipconfig PLIP_INTERFACE
Replace both placeholders with numbers, not the words shown. Recheck the link after restoring them. A reboot or interface reinitialisation may also discard runtime settings, but do not rely on that as your recovery plan while a working link is needed. The command does not edit a persistent network configuration, so any permanent setting must be managed separately through your distribution's network configuration system.
Common traps
- Using an Ethernet device name produces an unsupported ioctl rather than useful PLIP status.
- Changing both values at once makes it difficult to identify which change caused packet loss or CPU pressure.
- Lower numbers are not automatically better. Long parallel cables are especially unsuitable, and the manual warns that the port is not designed for long cable runs.
- A successful command does not replace an end-to-end test. Check the link in both directions and watch for serial devices losing characters.
- Do not put
PLIP_INTERFACE,ORIGINAL_NIBBLEorORIGINAL_TRIGGERliterally in a production command.
Done means
- The installed
net-toolsversion and PLIP interface were identified. - The original nibble and trigger values were recorded before any change.
- Only one modest timing change was tested at a time.
- Status was read back and an end-to-end transfer was checked.
- The recorded values can restore the previous runtime state if the trial is worse.