Hardware
Drive:
- Model: Iomega Ditto 2GP-PPT IO2000-PX
- Serial: U707161UEG
- No visible "Series" markings on label
- No DIP switches or jumpers visible
System:
- Dell OptiPlex GX620
- Motherboard-integrated parallel port (not PCI card)
- Parallel port: 0x378, IRQ 7
- Debian GNU/Linux, kernel 6.12.43+deb13-amd64
Cable:
- 3-foot DB25 male-to-female
- Bidirectional parallel cable
ftape Version:
commit 4caf99a (HEAD -> master, origin/master, origin/HEAD)
Author: dbrant
Date: [latest]
Add note about isapnp.
Issue Description
The Iomega Ditto 2GB (IO2000-PX) consistently returns 0x78 during protocol detection instead of the expected 0x40 (SPP mode) or 0xc0 (EPP mode). This causes ftape's bpck-fdc driver to fail initialization with "unsupported protocol" error.
Response Code Analysis
The 0x78 value corresponds to:
PARPORT_STATUS_ACK (0x40)
| PARPORT_STATUS_PAPEROUT (0x20)
| PARPORT_STATUS_SELECT (0x10)
| PARPORT_STATUS_ERROR (0x08)
= 0x78
This differs from the two currently recognized responses:
0x40 - Standard Backpack SPP mode
0xc0 - Backpack EPP mode (0x40 | PARPORT_STATUS_BUSY)
Attempted Configurations
All attempts resulted in the same 0x78 response:
- bpck-fdc driver with default settings
- bpck-fdc with SPP mode:
parport_proto=0
- bpck-fdc with EPP mode:
parport_proto=2
- bpck-fdc with explicit parport:
ft_fdc_parport=0
- bpck-fdc with rate limiting:
ft_fdc_rate_limit=2000
- trakker-fdc driver (alternative protocol)
All configurations consistently returned 0x78 during protocol query phase.
Code Modifications
Modified /ftape/lowlevel/bpck-fdc.c to accept 0x78 as a valid response:
In bpck_fdc_query_proto():
// Original code only accepted 0x40 or 0xc0
// Added 0x78 as valid response:
if (response == 0x40 || response == 0xc0 || response == 0x78) {
// proceed with protocol detection
}
In bpck_fdc_connect():
// Similar modification to accept 0x78 during connect phase
if (response == 0x40 || response == 0xc0 || response == 0x78) {
// proceed with connection
}
Current Status: Partial Success
After applying the above modifications:
✅ What Now Works:
- Initial protocol detection succeeds
- Drive responds consistently with 0x78
- Connect phase completes:
Connect response: 0x78
- Protocol switching (
bpck_fdc_switch_proto) completes
❌ What Still Fails:
- Second parport probe after protocol negotiation fails
- Error:
can't find parport interface for ftape id 0
ft_parport_probe(fdc, &bpck->parinfo) returns -6 (ENXIO)
- Device remains inaccessible:
/dev/nqft0 returns "No such device or address"
Debug Output
Parport Configuration:
root@recovery-station:~/ftape# dmesg | grep -i parport
[ 6325.973380] [107] fdc-parport.h (ft_parport_probe) - can't find parport interface for ftape id 0
[ 6325.973426] [112] bpck-fdc.c (bpck_fdc_detect) - ft_parport_probe(fdc, &bpck->parinfo) failed: -6
root@recovery-station:~/ftape# cat /proc/ioports | grep parport
0378-037a : parport0
037b-037f : parport0
root@recovery-station:~/ftape# cat /proc/interrupts | grep parport
7: 0 0 IO-APIC 7-edge parport0
root@recovery-station:~/ftape# lsmod | grep parport
ftape_parport 12288 0
parport_pc 40960 0
parport 81920 3 parport_pc,ppdev,ftape_bpck
Detailed Trace (with ft_tracing=0xffff):
The trace shows repeated 0x77 responses during initial communication, then successful 0x78 connect:
[ 6325.960304] 0x77
[ 6325.960366] 0x77
[ 6325.960424] 0x77
[... many 0x77 responses ...]
[ 6325.972145] [075] -bpck-fdc.c (bpck_fdc_test_protocol)
[ 6325.972294] [076] +bpck-fdc.c (bpck_fdc_connect)
[ 6325.972442] [077] bpck-fdc.c (bpck_fdc_connect) - Connect response: 0x78
[ 6325.972478] [078] -bpck-fdc.c (bpck_fdc_connect)
Protocol switching completes successfully through multiple register operations:
[ 6325.972487] [079] +bpck-fdc.c (bpck_fdc_select_reg)
[ 6325.972529] [080] -bpck-fdc.c (bpck_fdc_select_reg)
[ 6325.972536] [081] +bpck-fdc.c (bpck_fdc_write_reg_value)
[... successful register operations ...]
[ 6325.973223] [103] -bpck-fdc.c (bpck_fdc_switch_proto)
[ 6325.973229] [104] +bpck-fdc.c (bpck_fdc_release)
[ 6325.973240] [105] -bpck-fdc.c (bpck_fdc_release)
But then fails at second parport probe:
[ 6325.973246] [106] -bpck-fdc.c (bpck_fdc_probe)
[ 6325.973380] [107] fdc-parport.h (ft_parport_probe) - can't find parport interface for ftape id 0
[ 6325.973418] [111] bpck-fdc.c (bpck_fdc_detect) - can't find bpck interface for ftape id 0
[ 6325.973426] [112] bpck-fdc.c (bpck_fdc_detect) - ft_parport_probe(fdc, &bpck->parinfo) failed: -6
[ 6325.973440] [114] fdc-io.c (fdc_search_driver) - No tape drive found for "bpck-fdc" driver
Observations
- Consistent 0x78 response indicates the drive is powered, responding, and communicating on the parallel port
- Different response codes at different stages: Drive returns
0x77 during initial polling, then 0x78 at connect
- Protocol negotiation succeeds with our modifications
- Secondary parport probe fails after successful protocol switching, suggesting:
- Parport state management issue
- Problem with parport reclaim after release
- Potential issue with "ftape id 0" indexing
Additional Information
Drive Behavior:
- LEDs power on normally
- No tape currently inserted (unable to control drive yet)
- No mechanical sounds during initialization attempts
- Drive has not been tested under Windows
Notes:
- IO2000-PX was standard model for Ditto 2GB parallel port drives
- Sony sold identical hardware as "StorStation 2GB" with same model number
- This was a joint Iomega/Sony development
The drive's consistent 0x78 response suggests this is a legitimate protocol variant that could be supported with additional modifications beyond accepting the 0x78 handshake code.
Hardware
Drive:
System:
Cable:
ftape Version:
Issue Description
The Iomega Ditto 2GB (IO2000-PX) consistently returns
0x78during protocol detection instead of the expected0x40(SPP mode) or0xc0(EPP mode). This causes ftape's bpck-fdc driver to fail initialization with "unsupported protocol" error.Response Code Analysis
The
0x78value corresponds to:This differs from the two currently recognized responses:
0x40- Standard Backpack SPP mode0xc0- Backpack EPP mode (0x40 | PARPORT_STATUS_BUSY)Attempted Configurations
All attempts resulted in the same 0x78 response:
parport_proto=0parport_proto=2ft_fdc_parport=0ft_fdc_rate_limit=2000All configurations consistently returned 0x78 during protocol query phase.
Code Modifications
Modified
/ftape/lowlevel/bpck-fdc.cto accept 0x78 as a valid response:In
bpck_fdc_query_proto():In
bpck_fdc_connect():Current Status: Partial Success
After applying the above modifications:
✅ What Now Works:
Connect response: 0x78bpck_fdc_switch_proto) completes❌ What Still Fails:
can't find parport interface for ftape id 0ft_parport_probe(fdc, &bpck->parinfo)returns -6 (ENXIO)/dev/nqft0returns "No such device or address"Debug Output
Parport Configuration:
Detailed Trace (with ft_tracing=0xffff):
The trace shows repeated
0x77responses during initial communication, then successful0x78connect:Protocol switching completes successfully through multiple register operations:
But then fails at second parport probe:
Observations
0x77during initial polling, then0x78at connectAdditional Information
Drive Behavior:
Notes:
The drive's consistent 0x78 response suggests this is a legitimate protocol variant that could be supported with additional modifications beyond accepting the 0x78 handshake code.