返回首页

一份全新的NE2000兼容网卡指南

作者:蓬岸 Dr.Quest
知乎文章编号:718081831
创建于:2024-09-03 9:45:54
修改于:2024-09-04 6:44:37


一份全新的NE2000兼容网卡指南

如果我们回顾90年代和2000年代的PC硬件市场,我们会发现“NE2000兼容网卡”几乎是与“SoundBlaster”兼容声卡一样普遍的概念:无论是硬件还是软件,几乎所有领域的文档里都能找到“NE2000兼容网卡”的身影,几乎成为PC以太网卡的“事实标准”。

NE2000的推出是作为80年代末Novell的PC服务器战略的一部分,即以PC硬件、NE系列网卡、NetWare网络操作系统系统搭配组成廉价的网络服务器方案,1987年推出的NE1000针对XT级别的PC,使用8-bit ISA插槽,而1988年的NE2000则主要针对286和更新的PC,使用16-bit插槽。NE系列网卡的性能并不是当时市场最好的,但比大多数产品便宜,由于单块网卡的成本差距会随着网络的规模越大而越发明显,Novell以平价网卡推广其网络软件的策略在当时取得了巨大成功,Netware直到90年代中期一直是PC局域网的事实标准。

原始版本的NE2000网卡

但Novell开发NE系列网卡的目标始终是为NetWare软件产品的销售铺路,而非销售硬件本身。和NE2000的巨大影响力不匹配的是,“原厂”NE系列网卡相当罕见,其数量远少于同样有名的SoundBlaster声卡。90年代上半叶,智邦(Accton)、D-Link等台湾厂商推出了诸多型号的廉价NE2000兼容网卡,其中相当一部分都取得了Novell的红标认证。加上高端网卡市场3Com、Intel的竞争,这进一步削减了人们购买原厂NE2000的动力。1997年,Microdyne Corp.不再以Novell品牌生产NE系列网卡,而是转向自己的“Ethermax”品牌,至此“原厂NE2000”正式在市场上销声匿迹。

红色NetWare “Yes”标签在90年代的以太网卡上相当常见

由于NE2000兼容网卡巨大的装机量,NetWare之外的许多网络操作系统也都自带NE2000网卡驱动、或是有比较容易找到的第三方驱动:比如微软的LAN Manager、Windows for Workgroups、PATHWORKS、LANtastic、Banyan VINES等等;同时NE2000也被许多老式Unix-like操作系统支持,专栏之前介绍老式LinuxNeXTSTEP的文章也都是以NE2000作为参考网卡的。

NE2000配置概述

为了展示当代复古计算爱好者在使用NE2000兼容网卡时的真实情况,我使用了两款今年推出的新款复古电脑:Pocket 386和Pocket 8088作为参考PC平台,而网卡则是在闲鱼上买到的三块不同芯片的网卡,分别是:

用于测试的三款网卡

三款网卡都支持免跳线配置(jumper free),其中RTL8019和UM9008还支持即插即用(PnP)。在这些网卡流行的90年代中期,“免跳线”对当时的使用者来说是一项方便使用的功能,它使用DOS下的配置软件,通过修改网卡EEPROM上的参数来代替硬件跳线对网卡的参数进行配置。但对于今天的复古电脑爱好者来说“免跳线”则未必更加方便:二手ISA网卡往往不再附带带有针对各种网络操作系统的驱动程序软盘,硬件卖家也通常缺乏DOS使用经验,反而是跳线配置的方式直到今天仍在一些板卡上出现,并为发烧友所熟悉。

规划IRQ和I/O端口地址

在IBM PC的ISA插槽中,ISA扩展卡可配置的资源通常有IRQ、DMA和I/O端口地址,这些资源都是有限的,并限制了PC可以安装的外设数量。这也是90年代“微机”(micro computer)和“小型机”(mini computer)的重要区别之一,后者通常能够提供更多的外设资源。

由于NE2000网卡不使用DMA,所以我们只需要关注IRQ和I/O端口地址。IRQ(中断请求,Interrupt request)是PC上最容易冲突的资源,因为对于PC XT电脑和8-bit ISA插槽而言,可用的IRQ只有6个,PC AT则扩展到10个,支持,直到90年代中后期I/O-APIC的引入扩展到24个IRQ才得到缓解。

一个典型的PC XT电脑的IRQ规划如下表,如果使用两个串口、一个并口和软驱,则只有IRQ2和IRQ5是没有冲突的,这也是大多数ISA声卡、网卡默认使用的IRQ,如果要使用更多的ISA设备,则需要停用一些外部端口。比如Pocket 8086只有一个串口、一个并口,而且没有软驱,因此IRQ 2、3、5、6都是可用的。 额外值得注意的是,在286、386之后的电脑上使用IRQ2要更加小心,IRQ2由于级联到IRQ9,配置到IRQ2的设备需要在软件中配置使用IRQ9。而对于支持高级电源管理ACPI的电脑来说,IRQ9会被ACPI功能占用。

IRQ设备
0系统时钟(无法修改)
1键盘(无法修改)
2用户ISA设备(在AT和更新的电脑中级联到IRQ9,在奔腾或更新的电脑上用于ACPI)
3用户ISA设备或串口COM2/COM4
4用户ISA设备或串口COM1/COM3
5用户ISA设备或并口LPT3
6用户ISA设备或软驱控制器
7用户ISA设备或并口LPT1/LPT2

如果不确定IRQ是否被占用,可以尝试使用DOS版HWiNFO工具(如果是286之前的电脑需要使用压缩包中纯16位的hwinfo16.exe)的“IRQ Assignment”功能查看。但需要注意的是,根据主板的不同,HWiNFO的报告未必准确,比如Pocket 8086中并没有COM2、硬盘、软驱,但HWiNFO却报告被占用。

HWInfo在Pocket 8086上的IRQ占用报告并不准确

通常来说PC上的I/O端口地址更加宽裕,8086和8088处理器支持16-bit I/O总线寻址,但IBM在设计最初的PC芯片组时只解码10位,标准的ISA设备可用的I/O总线空间是0x000~0x3FF(二进制0011 1111 1111),高于此位置的地址对软件来说仍然可见,但会映射到低10位地址上,比如0x7F2(0111 1111 0010)会映射到0x3F2(0011 1111 0010)上,二进制第11位的1被忽略。

PC ISA I/O Address Space : 10-bits or 16-bits

I/O地址冲突导致Pocket 8086无法识别通过XT-IDE连接的CF卡

I/O端口地址的配置对于Book8088和Pocket 8086来说更加重要,因为这两款机器的XT-IDE硬盘控制器的默认地址是0x300,与大多数NE2000网卡默认地址冲突。由于Book 8088和Pocket 8086的XT-IDE固件是集成在主板固件中的,因此没有简便的修改办法。这个问题在Book 8088中通常并不影响开机,但Pocket 8086中会导致XT-IDE硬盘无法被识别而无法正常使用。

RTL8019的配置工具在Book 8088上报告I/O地址冲突,但可以继续完成配置

解决这个问题的办法是找到另一块带有ISA插槽的主板或者电脑,预先为这些网卡调整好I/O端口地址的设置。

配置Realtek RTL8019

本文展示的第一块网卡是瑞昱(Realtek)的RTL8019,这是市面上最常见、文档最成熟的NE2000兼容网卡。RTL8019在90年代就由于其低廉的价格大受欢迎,其后续产品RTL8029(支持PCI插槽)、RTL8139(支持100Mbps)也都有着巨大的装机量。RTL8019也是复古计算社区中广受欢迎的网卡芯片,爱好者们设计了不止一款开源PCB方案用于生产新的RTL8019 ISA网卡。

github.com/Manawyrm/ISA

github.com/skiselev/isa

在国内,闲鱼上RTL8019网卡存量巨大,大多数情况下我们可以以很便宜的价格买到成品,因此并不需要重新生产网卡。RTL8019的驱动和配置工具在上面两个Github链接中非常容易找到,它是我在Book8088上使用的第一款NE2000兼容网卡,也是在前几篇文章中使用的参考卡。

值得一提的是,NE2000系列网卡最初是为16-bit ISA槽设计的,虽然设计上向下兼容8-bit ISA,但一些驱动程序并未很好地适配8-bit ISA槽。Crynwr Packet驱动和兼容芯片制造商提供的即插即用Packet驱动通常无法在PC XT级别的机型上正常工作。由于DOS下的TCP/IP协议套件如mTCP、WATTCP和KA9Q都依赖Packet驱动工作,因此在相当长的时间,PC XT机型上都无法通过NE2000系列网卡正常使用TCP/IP。

在2014年,复古电脑论坛VCFED上的爱好者profdc9改进了Crynwr Collection中的开源NE2000 Packet驱动,使之可以在8位ISA插槽上正常工作。在上述的Github连接中都可以找到它们,我们可以将这些驱动下载下来作为备用。

使用RSET8019查看网卡地址

RTL8019的配置工具的文件名通常叫做RSET8019.EXE,在上面两个Github链接中都可以找到,View Current Configuration可以查看网卡当前的配置,修改这些配置则在Setup菜单中进行,如果是Pentium或之后的电脑,可以将Operating Mode设置为Plug & Play,这样BIOS会尝试自动配置网卡的IRQ和I/O地址,但对于更老的电脑而言则需要设置成Jumperless模式,并手工设置IRQ和I/O地址。

使用RSET8019修改网卡的IRQ配置,星号代表被其他设备占用的资源

在我的实测中,REST8019工具未必能在所有XT级别的电脑上工作:它无法在Pocket 8086上进行配置,Book 8088上则没有问题,但已经配置好的网卡在所有机器上都工作正常。

配置Accton UK0022

智邦Accton是最早推出NE2000兼容网卡的厂家之一,他们生产的网卡芯片多数以“EN”开头,而UK0022这款网卡芯片则是专门为Unisys开发的定制版本。

测试使用的Uni

Accton UK0022网卡虽然不算少见,但配置工具却不太容易找到。我最初找到的可以下载驱动的地方是DriverGuide,然而这个网站上有一些垃圾软件和钓鱼软件陷阱,大家需要小心。

另外一个安全的驱动下载点可以在这里找到uk0022.zip下载:Index of /Drivers/network cards/Accton

使用Accton网卡配置工具修改网卡参数

下载驱动压缩包后,可以在DIAG目录找到SETUP.EXE,就是网卡的配置程序了。Accton的配置程序和RTL8019的配置程序大同小异,而且相对不挑主板,在Pocket 8086上也可以正常运行。“Auto Configuration”是自动配置,程序会自动检测可用的IRQ和I/O地址进行配置,“Set Configuration”则是手动配置。

配置UMC UM9008/Davicom DM9008

UM9008和DM9008其实是同一款芯片,都出自联电UMC。1996年联电将其通信部门分离出来成立子公司联杰Davicom,其名称有Division Communication之意。因此联电在90年代中后期的诸多网卡芯片,包括UM9003、UM9007等,也都有对应的DM900x芯片。

本次使用的网卡,芯片标识为Davicom DM9008F

我原本还有一块UM9007网卡,但是最近测试是发现该卡已经出现故障而无法配置,因此这篇文章仅展示UM9008的配置。

UMC 9007F网卡,因故障无法测试

UM9008的驱动和配置文件工具可以在DriverGuide上找到,但我实测中有些版本的UM9008配置工具DIAG9008.EXE会误报IRQ3被占用,Vogons网站的NE-12配置工具NET12DIAG.EXE更加可靠一些。

VOGONS Vintage Driver Library

Index of /LegacyProducts/SBC/PCA-6145B/UTILITY.210/LAN/UTILITY

UM9008配置工具的使用方法同样是类似的,程序主页面会显示目前机器上已经安装的网卡信息,比如下面照片中找到的网卡的I/O地址为0x2a0,IRQ为5。

UM9008配置工具检测出网卡信息

修改网卡配置信息的选项在Configuration → Modify Configuration中,主要修改的选项仍然是IRQ和I/O端口地址,被占用的IRQ和I/O和RTL8019的配置程序类似会用星号标注。

使用配置完成后的网卡

使用免跳线方式配置的“NE2000兼容网卡”理论上应当与使用硬件跳线配置的NE2000网卡在软件上是相同的,无论使用哪种操作系统或软件环境,只要它们能够兼容NE2000网卡或安装NE2000驱动,就应当可以使用所有“NE200兼容网卡”。

加载8-bit ISA NE2000网卡驱动

在我的测试中,使用NE2000 8-bit ISA修改版Packet驱动,可以在Pocket 386、Book 8088和Pocket 8086上使用所有NE2000兼容网卡,比如我们已知某块网卡的IRQ是3,I/O地址是0x280,就可以用

ne2000 0x60 3 0x280

命令启用该网卡,其中0x60是软件中断号,一般可以选择0x60~0x80之间的任意数字。

加载UMC 9008的厂家驱动,只需要指定软件终端号即可

如果NE2000兼容网卡安装在16-bit ISA插槽上,那么使用厂商提供的Packet驱动也是可行的,比如RTL8019网卡的PNPPD.COM驱动,或者UM9008的PKT9008.COM驱动,但需要注意的是,当NE2000兼容网卡安装在8-bit ISA插槽时,芯片厂家提供的Packet驱动有可能出现正常加载但不能正常工作的情况,建议如果在已知网卡的IRQ和I/O端口地址的情况下,优先使用上述8-bit ISA驱动。

在DOS下使用多块网卡

虽然DOS作为主要为单机、单用户环境设计的操作系统,其网络功能受到诸多限制,但KA9Q、LANtastic等运行在DOS上的网络操作系统仍然提供了使用多接口的能力。我们只需要将网卡分配在不同的IRQ和I/O地址资源上,并避免使用IRQ冲突的设备,就可以同时使用多个网卡。例如我自己就让三块网卡同时工作在Pocket 8086上。其资源分配和驱动加载命令如下:

IRQI/O Address软件中断驱动加载命令
30x2800x60ne2000 0x60 3 0x280
40x3200x61ne2000 0x61 4 0x320
50x2a00x62ne2000 0x62 5 0x2a0

由于IRQ4和串口COM1冲突,因此在使用此网卡时,COM1串口就无法使用。但对于PC仅被用于局域网服务器的场景,无法使用串口是可以被接受的。在下图中,展示了KA9Q成功配置三块网卡的情况:

在KA9Q中配置三块网卡

使用多块网卡,KA9Q可以实现TCP/IP路由等更复杂的网络功能。鉴于本文的篇幅,就无法详细介绍了。但就像文章开头所列举的诸多不同的网络操作系统所展示的那样,人们在80、90年代对PC的网络应用做了相当多有趣的尝试,也发展出许多有趣的网络协议和应用。希望这篇文章,能够让更多人迈出探索复古电脑网络世界的脚步。