# Intel 7260: poor performance and frequent disconnects ## Summary Dell Precision M3800 [0] ships with Ubuntu 14.04.1 installed. The factory-installation includes OEM upgrades and additions to support hardware and provide access to Dell's Linux recovery services. The additions [1] are available separately. Original BIOS version was A08; an A09 upgrade is available. The factory-installed linux-image package version is 3.13.0.38. $ dmesg | grep DMI DMI: Dell Inc. Dell Precision M3800/Dell Precision M3800, BIOS A09 01/08/2015 If the factory-supplied software is replaced with a standard Ubuntu installation some hardware performs badly. One such is the Intel 7260 Wireless 802.11abgn plus Bluetooth [4] which uses the iwlwifi driver. Some improvement can be gained by passing the module the parameter '11n_disable=1' via "/etc/modprobe.d/iwlwifi.conf" 'options' entry. ## Investigation The system has been upgraded to 14.04.3 and is using linux-image 3.19.0-28-generic and associated linux-firware. There were no out-of-tree or DKMS iwlwifi modules installed: $ find /lib/modules -name 'iwlwifi*' ... /lib/modules/3.19.0-25-generic/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko ... /lib/modules/3.19.0-28-generic/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko ... The installed module claims to use 7260 firmware version "-10": $ modinfo iwlwifi filename: /lib/modules/3.19.0-28-generic/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko license: GPL author: Copyright(c) 2003- 2014 Intel Corporation version: in-tree: description: Intel(R) Wireless WiFi driver for Linux ... firmware: iwlwifi-100-5.ucode firmware: iwlwifi-1000-5.ucode firmware: iwlwifi-135-6.ucode firmware: iwlwifi-105-6.ucode firmware: iwlwifi-2030-6.ucode firmware: iwlwifi-2000-6.ucode firmware: iwlwifi-5150-2.ucode firmware: iwlwifi-5000-5.ucode firmware: iwlwifi-6000g2b-6.ucode firmware: iwlwifi-6000g2a-5.ucode firmware: iwlwifi-6050-5.ucode firmware: iwlwifi-6000-4.ucode firmware: iwlwifi-7265D-10.ucode firmware: iwlwifi-7265-10.ucode firmware: iwlwifi-3165-10.ucode firmware: iwlwifi-3160-10.ucode firmware: iwlwifi-7260-10.ucode ** firmware: iwlwifi-8000-10.ucode .... The installed firmware files are: $ sha1sum /lib/firmware/iwlwifi-7260* 6a2a1e0918a939be3bf769d2261f12116a73275f /lib/firmware/iwlwifi-7260-10.ucode 2836b88c5221ebda224aed0e2af2db1626711ec8 /lib/firmware/iwlwifi-7260-12.ucode 30cd28f8c08d25b1e3343852164f8eb4c0eb3df0 /lib/firmware/iwlwifi-7260-13.ucode dcd6577450cda0ffcca90ba241c17bfc833e0d3a /lib/firmware/iwlwifi-7260-7.ucode 7cf634ec52887c4dd6c87241e3b6ae862c7c0e0e /lib/firmware/iwlwifi-7260-8.ucode 947025daf0c318e9d3aa1075e33b2fdee7cd9080 /lib/firmware/iwlwifi-7260-9.ucode On a host with Linux v4.2.0 kernel the firmware files are: 6a2a1e0918a939be3bf769d2261f12116a73275f /lib/firmware/iwlwifi-7260-10.ucode 2836b88c5221ebda224aed0e2af2db1626711ec8 /lib/firmware/iwlwifi-7260-12.ucode 30cd28f8c08d25b1e3343852164f8eb4c0eb3df0 /lib/firmware/iwlwifi-7260-13.ucode dcd6577450cda0ffcca90ba241c17bfc833e0d3a /lib/firmware/iwlwifi-7260-7.ucode 7cf634ec52887c4dd6c87241e3b6ae862c7c0e0e /lib/firmware/iwlwifi-7260-8.ucode 947025daf0c318e9d3aa1075e33b2fdee7cd9080 /lib/firmware/iwlwifi-7260-9.ucode The Dell OEM linux-firmware package contains: dcd6577450cda0ffcca90ba241c17bfc833e0d3a M3800-14.04/linux-firmware/lib/firmware/iwlwifi-7260-7.ucode 7cf634ec52887c4dd6c87241e3b6ae862c7c0e0e M3800-14.04/linux-firmware/lib/firmware/iwlwifi-7260-8.ucode 21ab34f5f5d71a15d56c34551734d9414059893e M3800-14.04/linux-firmware/lib/firmware/iwlwifi-7260-9.ucode The differing hashes show the Dell OEM package has a different 'iwlwifi-7260-9.ucode' to that shipped in the standard linux-firmware package. The kernel log reports: kernel: [ 7.599030] iwlwifi 0000:06:00.0: loaded firmware version 25.17.12.0 op_mode iwlmvm The internal firmware version reported by the kernel doesn't directly match the filename versioning so the kernel source-code for iwlwifi was used as a reference to write a small C [2] program [3] to analyse the firmware file internal headers. Its output for linux v4.2.0-10 and the Dell OEM packages was: $ for FW in M3800-14.04/linux-firmware/lib/firmware/iwlwifi-7260*.ucode /lib/firmware/iwlwifi-7260-*.ucode; do ./iwlwifi_fw_version $FW; done Version 22.1.7.0 Type TLV M3800-14.04/linux-firmware/lib/firmware/iwlwifi-7260-7.ucode Version 22.24.8.0 Type TLV M3800-14.04/linux-firmware/lib/firmware/iwlwifi-7260-8.ucode Version 23.214.9.0 Type TLV M3800-14.04/linux-firmware/lib/firmware/iwlwifi-7260-9.ucode Version 23.15.10.0 Type TLV /lib/firmware/iwlwifi-7260-10.ucode Version 25.17.12.0 Type TLV /lib/firmware/iwlwifi-7260-12.ucode Version 25.30.13.0 Type TLV /lib/firmware/iwlwifi-7260-13.ucode Version 22.1.7.0 Type TLV /lib/firmware/iwlwifi-7260-7.ucode Version 22.24.8.0 Type TLV /lib/firmware/iwlwifi-7260-8.ucode Version 25.228.9.0 Type TLV /lib/firmware/iwlwifi-7260-9.ucode But on the problem system the firmware file supposedly loaded (as claimed by by the module: iwlwifi-7610-10) had a different internal version than the kernel log reported: Version 23.15.10.0i Type TLV /lib/firmware/iwlwifi-7260-10.ucode From this analysis it can be seen that the module reports loading 25.17.12.0 which would be 'iwlwifi-7260-12.ucode'. This is confusing since the module doesn't declare that file as a firmware file it knows about. This could however point to the cause of the problem. If the kernel module and firmware version are mismatched it is quite possible this would lead to incorrect behaviour since the two are closely linked. Another possibility is inteference from the Intel Bluetooth module since the kernel log also reports patching its firmware: kernel: [ 7.221450] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.7.10-fw-1.80.1.2d.d.bseq kernel: [ 7.271015] Bluetooth: hci0: Intel Bluetooth firmware patch completed and activated ## References [0] http://www.dell.com/support/home/us/en/19/product-support/product/precision-m3800-workstation/ [1] http://www.dell.com/support/home/us/en/19/Drivers/DriversDetails?driverId=VW84F [2] https://iam.tj/projects/misc/iwlwifi_fw_version.c [3] https://iam.tj/projects/misc/iwlwifi_fw_version [4] http://www.intel.com/content/www/us/en/wireless-products/dual-band-wireless-ac-7260-bluetooth.html