How to Enable PCIe WiFi into i.MX6 Android Release?

Document created by Lily Zhang Employee on Feb 6, 2013Last modified by Lily Zhang Employee on Oct 14, 2013
Version 8Show Document
  • View in full screen mode

Overview

 

The purpose of this doument is to introduce how to enable PCIe WiFi into i.MX6 Android release.

 

Environment Setup

 

  • Hardware: i.MX6 SABRE-SD board
  • Software: Android Jelly Bean 4.2

 

Software Configurations

 

The source codes of Intel PCIe WiFi have been integrated for i.MX6 SABRE-SD board into i.MX6 Android release. However it's disabled by default. To enable it for i.MX6 SABRE-SD board, you can do the following:

 

  • Change BOARD_WLAN_VENDOR to INTEL in device/fsl board configuration files. For example,

diff --git a/sabresd_6dq/BoardConfig.mk b/sabresd_6dq/BoardConfig.mk
index 9c8a32d..912e752 100755
--- a/sabresd_6dq/BoardConfig.mk
+++ b/sabresd_6dq/BoardConfig.mk
@@ -11,7 +11,7 @@ TARGET_BOOTLOADER_BOARD_NAME := SABRESD
PRODUCT_MODEL := SABRESD-MX6DQ

# Wifi
-BOARD_WLAN_VENDOR                       := ATHEROS
+BOARD_WLAN_VENDOR                       := INTEL
# for atheros vendor
ifeq ($(BOARD_WLAN_VENDOR),ATHEROS)
BOARD_WLAN_DEVICE                       := ar6003
@@ -30,6 +30,7 @@ WIFI_COMPAT_MODULE_ARG                         := ""
endif
#for intel vendor
ifeq ($(BOARD_WLAN_VENDOR),INTEL)
+BOARD_WLAN_DEVICE                       := INTEL
BOARD_HOSTAPD_PRIVATE_LIB               ?= private_lib_driver_cmd
BOARD_WPA_SUPPLICANT_PRIVATE_LIB        ?= private_lib_driver_cmd
WPA_SUPPLICANT_VERSION                  := VER_0_8_X

 

  • After changing BOARD_WLAN_VENDOR as "INTEL", the following files will be compiled for intel WiFi:
    • device/fsl-proprietary/pcie-wifi/
    • external/wpa_supplicant_8
    • hardware/imx/wlan/intel/
    • hardware/libhardware_legacy/wifi/wifi_intel.c
  • Enable PCIe WiFi driver in kernel_imx by running "make menuconfig" command:
    • Select "System Type -> Freescale MXC Implementations -> PCI Express support" as "*"
    • Select "Networking support -> Wireless ->  cfg80211 - wireless configuration API" as "*". Then select "Networking support -> Wireless -> Generic IEEE 802.11 Networking Stack (mac80211)" as "*"
    • Select "Device Drivers ->  Network device support -> Wireless LAN -> Intel Wireless WiFi 4965AGN (iwl4965)" as "*"
    • Then run "make" command to build kernel.
    • The followings are the dependencies files to enable above configuration:

 

Kernel configuration:

* -> System Type

-> Freescale MXC Implementations

Select the PCI Express support.

Then config intel WIFI driver:

Generic IEEE 802.11 Networking Stack (mac80211) used by WIFI devices

Symbol: MAC80211 [=y]

Type : tristate

Prompt: Generic IEEE 802.11 Networking Stack (mac80211)

Defined at net/mac80211/Kconfig:1

Depends on: NET [=y] && WIRELESS [=y] && CFG80211 [=y]

Location:

-> Networking support (NET [=y])

-> Wireless (WIRELESS [=y])

Intel iwl4965 or iwl6300 card driver

Symbol: IWL4965 [=y]

Type : tristate

Prompt: Intel Wireless WiFi 4965AGN (iwl4965)

Defined at drivers/net/wireless/iwlegacy/Kconfig:65

Depends on: NETDEVICES [=y] && WLAN [=y] && PCI [=y] && MAC80211 [=y]

Location:

-> Device Drivers

-> Network device support (NETDEVICES [=y])

  • Then you can follow up the instructions into Android User guide to build Android image.

 

Known Limitation

  • PCIe low power mode is not supported according to BSP release note. So when building in PCIe, the system suspend/resume should be disabled now.
1 person found this helpful

Attachments

Outcomes