Linux 和并行端口 IDE 设备

PARIDE v1.03 (c) 1997-8 Grant Guenther <grant@torque.net> PATA_PARPORT (c) 2023 Ondrej Zary

1. 简介

由于并行端口接口对个人计算机的简单性和近乎普遍性,许多外部设备(如便携式硬盘、CD-ROM、LS-120 和磁带驱动器)都使用并行端口连接到其主机。虽然某些设备(特别是扫描仪)使用特别的方法通过并行端口接口传递命令和数据,但大多数外部设备实际上与内部型号相同,只是添加了一个并行端口适配器芯片。一些原始的并行端口适配器只不过是复用 SCSI 总线的机制。(ZIP 驱动器中使用的 Iomega PPA-3 适配器就是这种方法的一个例子)。然而,大多数当前的设计采用了不同的方法。适配器芯片在外部设备中复制了一个小的 ISA 或 IDE 总线,并且通信协议提供了用于读取和写入设备寄存器以及数据块传输操作。有时,通过并行电缆寻址的设备是像 NCR 5380 这样的标准 SCSI 控制器。“ditto”系列外部磁带驱动器使用 ISA 复制器来连接软盘控制器,然后软盘控制器连接到软盘磁带机制。然而,绝大多数外部并行端口设备现在都基于标准 IDE 类型设备,这些设备不需要中间控制器。例如,如果打开一个并行端口 CD-ROM 驱动器,就会发现一个标准的 ATAPI CD-ROM 驱动器、一个电源和一个将标准 PC 并行端口电缆和标准 IDE 电缆互连的适配器。通常可以将 CD-ROM 设备与任何其他使用 IDE 接口的设备交换。

本文档描述了 Linux 中对并行端口 IDE 设备的支持。它不涵盖并行端口 SCSI 设备、“ditto”磁带驱动器或扫描仪。并行端口 IDE 子系统支持许多不同的设备,包括

  • MicroSolutions 背包 CD-ROM

  • MicroSolutions 背包 PD/CD

  • MicroSolutions 背包硬盘

  • MicroSolutions 背包 8000t 磁带驱动器

  • SyQuest EZ-135、EZ-230 和 SparQ 驱动器

  • Avatar Shark

  • Imation Superdisk LS-120

  • Maxell Superdisk LS-120

  • FreeCom Power CD

  • Hewlett-Packard 5GB 和 8GB 磁带驱动器

  • Hewlett-Packard 7100 和 7200 CD-RW 驱动器

以及市场上大多数克隆和无名产品。

为了支持如此广泛的设备,pata_parport 实际上分为两个部分。有一个基本 pata_parport 模块,它为内核 libata 子系统、注册表和一些用于访问并行端口的通用方法提供了接口。

第二个组件是一组用于每个并行端口 IDE 适配器芯片的低级协议驱动程序。由于来自世界各地的 Linux 用户的兴趣和鼓励,几乎所有已知的适配器协议都提供了支持

aten

ATEN EH-100

(香港)

bpck

Microsolutions 背包

(美国)

comm

DataStor(旧式)“通勤者”适配器

(台湾)

dstr

DataStor EP-2000

(台湾)

epat

Shuttle EPAT

(英国)

epia

Shuttle EPIA

(英国)

fit2

FIT TD-2000

(美国)

fit3

FIT TD-3000

(美国)

friq

Freecom IQ 电缆

(德国)

frpw

Freecom Power

(德国)

kbic

KingByte KBIC-951A 和 KBIC-971A

(台湾)

ktti

KT Technology PHd 适配器

(新加坡)

on20

OnSpec 90c20

(美国)

on26

OnSpec 90c26

(美国)

2. 使用 pata_parport 子系统

配置 Linux 内核时,可以选择将 pata_parport 驱动程序构建到内核中,也可以将其构建为模块。

无论哪种情况,都需要选择“并行端口 IDE 设备支持”和至少一个并行端口通信协议。如果您不知道您的驱动器中使用的是哪种并行端口适配器,您可以首先检查 DOS 安装软盘上的文件名和任何文本文件。或者,您可以查看适配器芯片本身的标记。这通常足以识别正确的设备。

您实际上可以选择所有协议模块,并允许 pata_parport 子系统为您尝试所有模块。

对于上面列出的“品牌”产品,以下是您将使用的协议和高级驱动程序

制造商

型号

协议

MicroSolutions

CD-ROM

bpck

MicroSolutions

PD 驱动器

bpck

MicroSolutions

硬盘

bpck

MicroSolutions

8000t 磁带

bpck

SyQuest

EZ、SparQ

epat

Imation

Superdisk

epat

Maxell

Superdisk

friq

Avatar

Shark

epat

FreeCom

CD-ROM

frpw

Hewlett-Packard

5GB 磁带

epat

Hewlett-Packard

7200e (CD)

epat

Hewlett-Packard

7200e (CD-R)

epat

所有 parport 和所有协议驱动程序都会自动探测,除非使用 probe=0 参数。因此,只需“modprobe epat”就足以使 Imation SuperDisk 驱动器工作。

手动创建设备

# echo "port protocol mode unit delay" >/sys/bus/pata_parport/new_device

其中

port

parport 名称(或“auto”表示所有 parport)

protocol

协议名称(或“auto”表示所有协议)

mode

模式编号(协议特定的)或 -1 表示探测

unit

单元编号(仅适用于背包,请参阅下文)

delay

I/O 延迟(请参阅下面的故障排除部分)

如果您碰巧使用的是 MicroSolutions 背包设备,您还需要知道每个驱动器的单元 ID 号。这通常是驱动器序列号的最后两位数字(但请阅读 MicroSolutions 关于此的文档)。

如果您省略末尾的参数,将使用默认值,例如

使用所有协议探测所有 parport

# echo auto >/sys/bus/pata_parport/new_device

使用协议 epat 和模式 4 (EPP-16) 探测 parport0

# echo "parport0 epat 4" >/sys/bus/pata_parport/new_device

使用所有协议探测 parport0

# echo "parport0 auto" >/sys/bus/pata_parport/new_device

使用协议 epat 探测所有 parport

# echo "auto epat" >/sys/bus/pata_parport/new_device

删除设备

# echo pata_parport.0 >/sys/bus/pata_parport/delete_device

3. 故障排除

3.1 如果可以,请使用 EPP 模式

人们报告的 pata_parport 驱动程序最常见的问题与并行端口 CMOS 设置有关。目前,没有任何协议模块支持 ECP 模式或任何 ECP 组合模式。如果可以,请使用 CMOS 设置过程将并行端口设置为 EPP 模式。

3.2 检查端口延迟

某些并行端口无法以全速可靠地传输数据。为了抵消错误,协议模块在每次访问 I/O 端口之间引入“端口延迟”。每个协议都为此延迟设置一个默认值。在大多数情况下,用户可以覆盖默认值并将其设置为 0,从而获得更高的传输速率。在某些极少数情况下(特别是对于较旧的 486 系统),默认延迟不够长。如果您遇到数据传输损坏或意外故障,您可能需要增加端口延迟。

3.3 某些驱动器需要打印机重置

市场上似乎有许多“无名”外部驱动器无法始终正确启动。我们注意到某些基于 OnSpec 和较旧 Freecom 适配器的驱动器存在这种情况。在这些极少数情况下,通常可以通过在并行端口上发出“打印机重置”来重新初始化适配器。由于重置操作可能会在多设备环境中造成干扰,因此 pata_parport 驱动程序不会自动执行此操作。但是,您可以通过执行以下操作来强制打印机重置

insmod lp reset=1
rmmod lp

如果您遇到这些边缘情况之一,您可能应该将 pata_parport 驱动程序构建为模块,并安排在加载 pata_parport 驱动程序之前执行打印机重置。