# Chelsio T420-BT firmware error, any fix?

## trumee

Hello,

I have a T420-BT card which was working fine. I updated the Chelsio driver (ChelsioUwire-2.12.0.3) and since then it stopped working.

```

#lspci

07:00.0 Ethernet controller: Chelsio Communications Inc T420-BT Unified Wire Ethernet Controller

07:00.1 Ethernet controller: Chelsio Communications Inc T420-BT Unified Wire Ethernet Controller

07:00.2 Ethernet controller: Chelsio Communications Inc T420-BT Unified Wire Ethernet Controller

07:00.3 Ethernet controller: Chelsio Communications Inc T420-BT Unified Wire Ethernet Controller

07:00.4 Ethernet controller: Chelsio Communications Inc T420-BT Unified Wire Ethernet Controller

07:00.5 SCSI storage controller: Chelsio Communications Inc T420-BT Unified Wire Storage Controller

07:00.6 Fibre Channel: Chelsio Communications Inc T420-BT Unified Wire Storage Controller

07:00.7 Ethernet controller: Chelsio Communications Inc Device 0000

```

dmesg gives the following error on modprobe

```

#modprobe cxgb4

[ 3126.817244] Chelsio T4/T5/T6 Offload Network Driver - version 2.12.0.3

[ 3126.817488] cxgb4 0000:07:00.4: Firmware reports adapter error: During Device Preparation

[ 3126.817490] cxgb4 0000:07:00.4: Firmware failed to return Configuration Space register 16, err = 6

[ 3126.817496] cxgb4 0000:07:00.4: Firmware reports adapter error: During Device Preparation

[ 3126.817500] cxgb4 0000:07:00.4: Firmware reports adapter error: During Device Preparation

[ 3126.817500] cxgb4 0000:07:00.4: could not connect to FW, error 6

[ 3126.817501] cxgb4 0000:07:00.4: Adapter initialization failed, error 6.  Continuing in debug mode

[ 3126.823137] cxgb4 0000:07:00.4 enp7s0f4: renamed from eth0

[ 3126.823145] DMA buffer at bus address 0xffff0000, virtual 0xffff8807c2270000

[ 3126.823158] enp7s0f4: Chelsio T420-BT rev 2 BASE-Fiber_XFI NIC , non-Offload capable

[ 3126.823168] enp7s0f4: S/N: PT03150623, P/N: 110115240D0

```

The firmware is available

```

#ls -l /lib/firmware/cxgb4

total 1548

-rw-r--r-- 1 root root 179202 Nov  4 21:09 aq1202_fw.cld

-rw-r--r-- 1 root root 208900 Nov  4 21:09 bcm8483.bin

-rw-r--r-- 1 root root  21429 Nov  4 21:09 t4-config.txt

-rw-r--r-- 1 root root 541184 Nov  4 21:09 t4fw-1.15.37.0.bin

lrwxrwxrwx 1 root root     38 Nov  4 21:09 t4fw.bin -> /lib/firmware/cxgb4/t4fw-1.15.37.0.bin

-rw-r--r-- 1 root root  21781 Nov  4 21:09 t5-config.txt

-rw-r--r-- 1 root root 596992 Nov  4 21:09 t5fw-1.15.37.0.bin

lrwxrwxrwx 1 root root     38 Nov  4 21:09 t5fw.bin -> /lib/firmware/cxgb4/t5fw-1.15.37.0.bin

```

ethtool shows the firmware-version as N/A:

```

# ethtool  -i enp7s0f4 

driver: cxgb4

version: 2.12.0.3

firmware-version: N/A

bus-info: 0000:07:00.4

supports-statistics: yes

supports-test: no

supports-eeprom-access: yes

supports-register-dump: yes

supports-priv-flags: no

```

I tried to flash the firmware but it returned an error:

```

# ethtool  -f enp7s0f4 t4fw-1.15.37.0.bin 

Flashing failed: No such file or directory

dmesg showed

[ 4391.362911] cxgb4 0000:07:00.4: Direct firmware load for t4fw-1.15.37.0.bin failed with error -2

```

----------

## Buffoon

To my knowledge -2 is not found. Have you tried to put firmware into /lib/firmware/?

----------

## trumee

 *Buffoon wrote:*   

> To my knowledge -2 is not found. Have you tried to put firmware into /lib/firmware/?

 

That certainly helped. The leds on the device however are still continuously lit even after loading the firmware.

```

$ ethtool  -f enp7s0f4 t4fw-1.15.37.0.bin

$ dmesg |tail -1

[ 3418.126631] cxgb4 0000:07:00.4: loaded firmware t4fw-1.15.37.0.bin

$ ethtool -i enp7s0f4

driver: cxgb4

version: 2.12.0.3

firmware-version: 1.15.37.0, TP 0.0.0.0

bus-info: 0000:07:00.4

supports-statistics: yes

supports-test: no

supports-eeprom-access: yes

supports-register-dump: yes

supports-priv-flags: no

```

So the firmware loads up fine. However, if i do a reload of the driver it again forgets the firmware

```

$rmmod cxgb4

$modprobe cxgb4

dmesg shows

[ 3630.189665] Chelsio T4/T5/T6 Offload Network Driver - version 2.12.0.3

[ 3630.190049] cxgb4 0000:07:00.4: Firmware reports adapter error: During Device Preparation

[ 3630.190051] cxgb4 0000:07:00.4: Firmware failed to return Configuration Space register 16, err = 6

[ 3630.190057] cxgb4 0000:07:00.4: Firmware reports adapter error: During Device Preparation

[ 3630.190060] cxgb4 0000:07:00.4: Firmware reports adapter error: During Device Preparation

[ 3630.190061] cxgb4 0000:07:00.4: could not connect to FW, error 6

[ 3630.190062] cxgb4 0000:07:00.4: Adapter initialization failed, error 6.  Continuing in debug mode

[ 3630.195871] cxgb4 0000:07:00.4 enp7s0f4: renamed from eth0

[ 3630.195941] DMA buffer at bus address 0xffff0000, virtual 0xffff8807f7760000

[ 3630.195960] enp7s0f4: Chelsio T420-BT rev 2 BASE-Fiber_XFI NIC , non-Offload capable

[ 3630.195961] enp7s0f4: S/N: PT03150623, P/N: 110115240D0

[ 3630.544320] usb 1-3: reset high-speed USB device number 2 using xhci_hcd

```

The driver cxgb4  supports the following parameters

```

$modinfo cxgb4

parm:           dflt_msg_enable:Chelsio T4/T5/T6 default message enable bitmap (int)

parm:           msi:whether to use INTx (0), MSI (1) or MSI-X (2) (int)

parm:           tx_coal:use tx WR coalescing, if set to 2, coalescing  will be used most of the time improving packets per  second troughput but affecting latency (int)

parm:           tx_db_wc:use tx WR combining (int)

parm:           tx_vm:Use Ethernet TX Workrequests which can be delivered to Virtual Interfaces on the same port. (int)

parm:           rx_dma_offset:Offset of RX packets into DMA buffers --  legal values 2 (default) and 0 (int)

parm:           num_vf:number of VFs for each of PFs 0-3 (array of uint)

parm:           t4_fw_install:whether to have FW auto-installed by driver during attach (0, 1, 2 = prohibited, allowed, encouraged respectively). (int)

parm:           fw_attach:whether to connect to FW (int)

parm:           dbfifo_int_thresh:doorbell fifo interrupt threshold (int)

parm:           dbfifo_drain_delay:usecs to sleep while draining the dbfifo (int)

parm:           allow_nonroot_filters:Allow nonroot access to filters (default = 0) (int)

parm:           attempt_err_recovery:Attempt to reset and recover from fatal hw errors (default = 0) (int)

parm:           select_queue:Select between kernel provided method of selecting or driver method of selecting TX queue. Default is kernel method. (int)

parm:           max_eth_qsets:Maximum number of queue sets that will be allocated per adapter, for Nic traffic. Valid values - 32..64, Default value is 32. (int)

parm:           deadman_watchdog:Array of elements representing pair of {n,m} where n is timer (min=1000ms, max=60000ms, 0=watchdog off) default 0; m is the mode(Optional), valid values (0=shutdown, 1=pauseoff) default 0 (array of int)

parm:           mq_with_1G:Support core no of queues per port, even for 1G port (uint)

parm:           user_filter_perc:Percentage of total Filter region space to be allotted for user-filters. Valid values - 0..100. Default is 33 (int)

parm:           use_ddr_filters:Use DDR Filters to support more no. of User-Filters (uint)

parm:           offload_rx_intr_cnt:Offload RX queue intr cnt threshold (default=1) (uint)

```

----------

## lumaforge

I also could not update through the main system OS.

I ultimately had to boot into DOS (FreeDOS 1.2 on a USB stick) and use the cfut4.exe firmware tool that's a part of their Linux downloadable driver package copied to a folder on the DOS USB stick.

I erased the Firmware, Bios, and Settings, then uploaded the T5 FW and the Bios, then rebooted.

Got the package from: http://service.chelsio.com/

Strangely, it still doesn't show up in lspci (I'm using FreeBSD) but I am no longer experiencing freezing of the device (there are two that simultaneously would go offline during use, despite having different firmwares before I updated them).

Hope this helps.

----------

## trumee

 *lumaforge wrote:*   

> I also could not update through the main system OS.
> 
> I ultimately had to boot into DOS (FreeDOS 1.2 on a USB stick) and use the cfut4.exe firmware tool that's a part of their Linux downloadable driver package copied to a folder on the DOS USB stick.
> 
> I erased the Firmware, Bios, and Settings, then uploaded the T5 FW and the Bios, then rebooted.
> ...

 

I did try to erase using the cfut4.exe and flashed the T4 FW. However, the card did not work after that. I think the mistake i made was updating it to the latest firmware since it stopped working with linux kernel 4.4.26.

I have sent it back and getting a replacement.

----------

## trumee

 *lumaforge wrote:*   

> I also could not update through the main system OS.
> 
> I ultimately had to boot into DOS (FreeDOS 1.2 on a USB stick) and use the cfut4.exe firmware tool that's a part of their Linux downloadable driver package copied to a folder on the DOS USB stick.
> 
> I erased the Firmware, Bios, and Settings, then uploaded the T5 FW and the Bios, then rebooted.
> ...

 

I get the following in FreeBSD-11

```

#kldload cxgbe

t4nex0: <Chelsio T420-BT> mem 0xc7280000-0xc72bffff,0xc6800000-0xc6ffffff,0xc73c4000-0xc73c5fff irq 26 at device 0.4 numa-domain 0 on pci3

command 0x3 in mailbox 4 timed out

Firmware reports adapter error: During Device Preparation

t4nex0: encountered fatal error, adapter stopped.

t4nex0: firmware reset failed: 6.

command 0x5 in mailbox 4 timed out

Firmware reports adapter error: During Device Preparation

t4nex0: encountered fatal error, adapter stopped.

t4nex0: error during attach, adapter is now in recovery mode.

kernel: t4nex0: encountered fatal error, adapter stopped.

```

By the way my card also stopped working suddenly after an hour or two of use. And therefore i went on the journey of updating the firmware which bricked my card. I suspect the reason the card stops working is probably it gets too hot.

----------

