1$NetBSD: ixp425-fw.README,v 1.7 2023/06/18 19:08:18 gutteridge Exp $ 2 3IXP425 NPE Microcode 4~~~~~~~~~~~~~~~~~~~~ 5 6The IXP425 contains up to three network co-processors called NPEs, 7"Network Processing Engines". These control all the networking features 8of the IXP425 and are usually supported by Access Library (AL) software 9and NPE microcode obtained from Intel. 10 11The AL source code and compiled object files are encumbered by a license 12which precludes its distribution with NetBSD. 13 14However, NetBSD includes source for a native driver for NPE Ethernet 15written by Sam Leffler. The driver requires that Intel's microcode is 16loaded onto the NPE, but since we cannot distribute the microcode, it 17must be downloaded from Intel's website after agreeing to their click- 18through license. 19 20You must grab the NPE microcode from here: 21 22 https://downloadcenter.intel.com/download/13757/IXP400-Software-NPE-Microcode-v3-0-without-crypto 23 24SHA1 (IPL_ixp400NpeLibrary-3_0.zip) = dda6b27265e6db3dfec68361644197c0f311a07b 25 26or the older version which is archived here: 27 https://mirror2.openwrt.org/sources/IPL_ixp400NpeLibrary-2_4.zip 28 29SHA1 (IPL_ixp400NpeLibrary-2_4.zip) = abf1562e750e16e6f9baf9892a59640f863a693e 30 31Select the "Download (without Crypto)" link in the "NPE Microcode" 32section. Note that there is no benefit in selecting the "with Crypto" 33microcode at this time since NetBSD does not support it. 34 35For reference, the "with Crypto" version is available here: 36 https://downloads.openwrt.org/sources/IPL_ixp400NpeLibraryWithCrypto-2_4.zip 37 38SHA1(IPL_ixp400NpeLibraryWithCrypto-2_4.zip)= 48beb80564fbbb7fb7861188cad26e896b5a5afc 39 40Note: At the time of writing (February 2017), the NPE Microcode is at 41version 3.0. However, the last known microcode version to work is 2.4. 42 43After clicking the link, you will be directed to a click-through license 44page. Assuming you agree to the terms of the license (and you are 45*strongly* advised to print it out and read it carefully) you will then 46be able to download a ZIP file containing the microcode. 47 48Extract the microcode under any decent Unix-like system using the "unzip" 49command provided with the OS, or with the version included in the pkgsrc 50collection under archivers/unzip: 51 52 $ unzip IPL_ixp400NpeLibrary-2_4.zip 53 54Next, you must generate a microcode image suitable for inclusion in the 55NetBSD kernel. 56 57 $ cd ixp400_xscale_sw/src/npeDl 58 59In this directory, create a file called IxNpeMicrocode.h, and populate 60it with the following two #defines: 61 62#define IX_NPEDL_NPEIMAGE_NPEB_ETH 63#define IX_NPEDL_NPEIMAGE_NPEC_ETH 64 65Note: If you know that you will only ever use Ethernet on NPE-B, you can 66omit the second line, and vice-versa. 67 68Now compile and run ixNpeDlImageConverter.c: 69 70 $ cc ixNpeDlImageConverter.c -o foo 71 $ ./foo 72 73Congratulations! You should now have a file called "IxNpeMicrocode.dat" 74in the current directory. Please take heed of the license you agreed to 75when you downloaded the Microcode. The license contains clauses which 76control the redistribution of this microcode object file. 77 78Now copy "IxNpeMicrocode.dat" to the sys/arch/arm/xscale directory in 79your NetBSD source tree. All you have to do now is run config(1) and 80build your kernel. 81 82If all went as planned, the Ethernet controller(s) will show up as npe0 83and npe1. That's all there is to it! 84 85It is planned that pkgsrc will, eventually, automate most of the above 86procedure. 87