OpenWRT移植FCS950R和EC200A,并实现手机连接WiFi上网

一、EC200A配置

1.1、kernel配置

1.1.1、USB转串口 

CONFIG_USB_SERIAL=y

CONFIG_USB_SERIAL_WWAN=y

CONFIG_USB_SERIAL_OPTION=y

 Symbol: USB_SERIAL_WWAN [=y]                                                                                                              │  
  │ Type  : tristate                                                                                                                          │  
  │   Defined at drivers/usb/serial/Kconfig:555                                                                                               │  
  │   Depends on: USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y]                                                                             │  
  │   Selected by [y]:                                                                                                                        │  
  │   - USB_SERIAL_OPTION [=y] && USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y]                                                             │  
  │   Selected by [n]:                                                                                                                        │  
  │   - USB_SERIAL_IPW [=n] && USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y]                                                                │  
  │   - USB_SERIAL_QUALCOMM [=n] && USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y] 
 Symbol: USB_SERIAL_OPTION [=y]                                                                                                            │  
  │ Type  : tristate                                                                                                                          │  
  │ Prompt: USB driver for GSM and CDMA modems                                                                                                │  
  │   Location:                                                                                                                               │  
  │     -> Device Drivers                                                                                                                     │  
  │       -> USB support (USB_SUPPORT [=y])                                                                                                   │  
  │ (1)     -> USB Serial Converter support (USB_SERIAL [=y])                                                                                 │  
  │   Defined at drivers/usb/serial/Kconfig:558                                                                                               │  
  │   Depends on: USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y]                                                                             │  
  │   Selects: USB_SERIAL_WWAN [=y]  

 1.1.2、USB网卡驱动

USB_USBNET=y

USB_NET_CDCETHER=y

USB_NET_RNDIS_HOST=y

 Symbol: USB_NET_CDCETHER [=y]                                                                                                             │  
  │ Type  : tristate                                                                                                                          │  
  │ Prompt: CDC Ethernet support (smart devices such as cable modems)                                                                         │  
  │   Location:                                                                                                                               │  
  │     -> Device Drivers                                                                                                                     │  
  │       -> Network device support (NETDEVICES [=y])                                                                                         │  
  │         -> USB Network Adapters (USB_NET_DRIVERS [=y])                                                                                    │  
  │ (1)       -> Multi-purpose USB Networking Framework (USB_USBNET [=y])                                                                     │  
  │   Defined at drivers/net/usb/Kconfig:210                                                                                                  │  
  │   Depends on: NETDEVICES [=y] && USB_NET_DRIVERS [=y] && USB_USBNET [=y]                                                                  │  
  │   Selected by [y]:                                                                                                                        │  
  │   - USB_NET_RNDIS_HOST [=y] && NETDEVICES [=y] && USB_NET_DRIVERS [=y] && USB_USBNET [=y]                                                 │  
  │   - USB_NET_ZAURUS [=y] && NETDEVICES [=y] && USB_NET_DRIVERS [=y] && USB_USBNET [=y]                                                     │  
  │   Selected by [n]:                                                                                                                        │  
  │   - USB_NET_RNDIS_WLAN [=n] && NETDEVICES [=y] && WLAN [=y] && USB [=y] && CFG80211 [=y] 
 Symbol: USB_NET_RNDIS_HOST [=y]                                                                                                           │  
  │ Type  : tristate                                                                                                                          │  
  │ Prompt: Host for RNDIS and ActiveSync devices                                                                                             │  
  │   Location:                                                                                                                               │  
  │     -> Device Drivers                                                                                                                     │  
  │       -> Network device support (NETDEVICES [=y])                                                                                         │  
  │         -> USB Network Adapters (USB_NET_DRIVERS [=y])                                                                                    │  
  │ (1)       -> Multi-purpose USB Networking Framework (USB_USBNET [=y])                                                                     │  
  │   Defined at drivers/net/usb/Kconfig:390                                                                                                  │  
  │   Depends on: NETDEVICES [=y] && USB_NET_DRIVERS [=y] && USB_USBNET [=y]                                                                  │  
  │   Selects: USB_NET_CDCETHER [=y]                                                                                                          │  
  │   Selected by [n]:                                                                                                                        │  
  │   - USB_NET_RNDIS_WLAN [=n] && NETDEVICES [=y] && WLAN [=y] && USB [=y] && CFG80211 [=y]  
1.1.3、iptables配置

1.1.4、USB转串口驱动修改
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
old mode 100644
new mode 100755
index fb337ba..69cd524
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -250,6 +250,7 @@ static void option_instat_callback(struct urb *urb);
 #define QUECTEL_PRODUCT_EP06                   0x0306
 #define QUECTEL_PRODUCT_EM12                   0x0512
 #define QUECTEL_PRODUCT_RM500Q                 0x0800
+#define QUECTEL_PRODUCT_EC200A                 0x6005
 
 #define CMOTECH_VENDOR_ID                      0x16d8
 #define CMOTECH_PRODUCT_6001                   0x6001
@@ -1114,6 +1115,7 @@ static const struct usb_device_id option_ids[] = {
          .driver_info = RSVD(4) },
        { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
          .driver_info = RSVD(4) },
+       { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200A) },
        { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
          .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
        { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) },
@@ -2081,6 +2083,9 @@ static struct usb_serial_driver option_1port_device = {
 #ifdef CONFIG_PM
        .suspend           = usb_wwan_suspend,
        .resume            = usb_wwan_resume,
+#if 1 //Added by Quectel
+       .reset_resume      = usb_wwan_resume,
+#endif
 #endif
 };
 
@@ -2116,6 +2121,55 @@ static int option_probe(struct usb_serial *serial,
        if (device_flags & NUMEP2 && iface_desc->bNumEndpoints != 2)
                return -ENODEV;
 
+#if 1 //Added by Quectel
+       //Quectel UC20's interface 4 can be used as USB Network device
+       if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)
+               && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
+               return -ENODEV;
+
+       //Quectel EC20(MDM9215)'s interface 4 can be used as USB Network device
+       if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)
+               && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
+               return -ENODEV;
+
+       if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
+               __u16 idProduct = le16_to_cpu(serial->dev->descriptor.idProduct);
+               struct usb_interface_descriptor *intf = &serial->interface->cur_altsetting->desc;
+
+               if (intf->bInterfaceClass != 0xFF) {
+                       //ECM, RNDIS, MBIM, ACM, UAC
+                       if (idProduct == 0x6004
+                               && intf->bInterfaceNumber > 1
+                               && intf->bInterfaceClass == 0x0A) {
+                               //EG060V cdc-acm interface force bind option
+                       }
+                       else {
+                               return -ENODEV;
+                       }
+               }
+               else if (intf->bInterfaceSubClass == 0x42) {
+                       //ADB
+                       return -ENODEV;
+               }
+               else if ((idProduct&0xF000) == 0x6000) {
+                       //ASR
+               }
+               else if ((idProduct&0xF000) == 0x8000) {
+                       //HISI
+                       if (intf->bInterfaceNumber == 0)
+                               return -ENODEV;
+               }
+               else if ((idProduct&0xFF00) == 0x0900) {
+                       //UNISOC
+               }
+               else if ((idProduct&0xF000) == 0x0000) {
+                       //MDM interface 4 is QMI
+                       if (intf->bInterfaceNumber == 4 && intf->bNumEndpoints == 3)
+                               return -ENODEV;
+               }
+       }
+#endif
+
        /* Store the device flags so we can use them during attach. */
        usb_set_serial_data(serial, (void *)device_flags);
 
diff --git a/drivers/usb/serial/usb_wwan.c b/drivers/usb/serial/usb_wwan.c
old mode 100644
new mode 100755
index 4b98458..6d21240
--- a/drivers/usb/serial/usb_wwan.c
+++ b/drivers/usb/serial/usb_wwan.c
@@ -479,6 +479,20 @@ static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port,
        if (intfdata->use_zlp && dir == USB_DIR_OUT)
                urb->transfer_flags |= URB_ZERO_PACKET;
 
+#if 1 //Added by Quectel for Zero Packet
+       /*Quectel 2C7C modules: add the zero packet mechanism*/
+       if(dir == USB_DIR_OUT){
+               if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9090))
+                       urb->transfer_flags |= URB_ZERO_PACKET;
+               if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9003))
+                       urb->transfer_flags |= URB_ZERO_PACKET;
+               if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9215))
+                       urb->transfer_flags |= URB_ZERO_PACKET;
+               if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C))
+                       urb->transfer_flags |= URB_ZERO_PACKET;
+       }
+#endif
+
        return urb;
 }
 

1.2、openWRT添加iptables

SymbOl:IP NF FILTER [=n]
Type :tristate
Prompt: Packet filtering
Location:
-> Networking support(NET [=y])
-> Networking options->Network packet filtering framework (Netfilter)(NETFILTER [=n])-> IP:Netfilter Configuration-> IP tables support (required for filtering/maSq/NAT)(IP NF IPTABLES [=n])Defined at net/ipv4/netfilter/Kconfig:175DependS On: NET [=y]&& INET [=y]&& NETFILTER [=N] && IP NF IPTABLES [=n]

二、FCS950R配置

2.1、修改配置文件

2.1.1、drivers/net/wireless/Makefile

根据指导文档,FCS950R模块添加,+obj-$(CONFIG_RTL8821CS) += wlan_src/,而SDK已经自带8821cs驱动,需要屏蔽

--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -32,8 +32,9 @@ obj-$(CONFIG_VIRT_WIFI)       += virt_wifi.o
 
 obj-$(CONFIG_XR829_WLAN)   += xr829/
 obj-$(CONFIG_XR819_WLAN)   += xr819/
-obj-$(CONFIG_RTL8821CS)   += rtl8821cs/
+# obj-$(CONFIG_RTL8821CS)   += rtl8821cs/
 obj-$(CONFIG_RTL8723DS)   += rtl8723ds/
 obj-$(CONFIG_SPARD_WLAN_SUPPORT) += uwe5622/
 obj-$(CONFIG_BCMDHD) += bcmdhd/
 obj-$(CONFIG_AIC_WLAN_SUPPORT) += aic8800/
+obj-$(CONFIG_RTL8821CS)   += wlan_src/
2.1.2、drivers/net/wireless/Kconfig
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -49,11 +49,12 @@ source "drivers/net/wireless/zydas/Kconfig"
 source "drivers/net/wireless/quantenna/Kconfig"
 source "drivers/net/wireless/xr829/Kconfig"
 source "drivers/net/wireless/xr819/Kconfig"
-source "drivers/net/wireless/rtl8821cs/Kconfig"
+# source "drivers/net/wireless/rtl8821cs/Kconfig"
 source "drivers/net/wireless/rtl8723ds/Kconfig"
 source "drivers/net/wireless/uwe5622/Kconfig"
 source "drivers/net/wireless/bcmdhd/Kconfig"
 source "drivers/net/wireless/aic8800/Kconfig"
+source "drivers/net/wireless/wlan_src/Kconfig"
 
 config PCMCIA_RAYCS
        tristate "Aviator/Raytheon 2.4GHz wireless support"

2.2、编译FCS950R驱动错误

头文件找不到

解决措施:修改头文件宏(EXTRA_CFLAGS)

diff --git a/drivers/net/wireless/wlan_src/Makefile b/drivers/net/wireless/wlan_src/Makefile
index 56e76b3..6929d9b 100755
--- a/drivers/net/wireless/wlan_src/Makefile
+++ b/drivers/net/wireless/wlan_src/Makefile
@@ -20,7 +20,8 @@ ifeq ($(GCC_VER_49),1)
 EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later
 endif
 
-EXTRA_CFLAGS += -I$(src)/include
+EXTRA_CFLAGS += -I$(srctree)/$(src)/include
+EXTRA_CFLAGS += -I$(srctree)/$(src)/hal/phydm
 
 EXTRA_LDFLAGS += --strip-debug
 
@@ -271,10 +272,10 @@ _HAL_INTFS_FILES :=       hal/hal_intf.o \
                        hal/led/hal_$(HCI_NAME)_led.o
 
 
-EXTRA_CFLAGS += -I$(src)/platform
+EXTRA_CFLAGS += -I$(srctree)/$(src)/platform
 _PLATFORM_FILES := platform/platform_ops.o
 
-EXTRA_CFLAGS += -I$(src)/hal/btc
+EXTRA_CFLAGS += -I$(srctree)/$(src)/hal/btc
 
 ########### HAL_RTL8188E #################################
 ifeq ($(CONFIG_RTL8188E), y)
@@ -2427,7 +2428,7 @@ ifeq ($(CONFIG_SDIO_HCI), y)
 rtk_core += core/rtw_sdio.o
 endif
 
-EXTRA_CFLAGS += -I$(src)/core/crypto
+EXTRA_CFLAGS += -I$(srctree)/$(src)/core/crypto
 rtk_core += \
                core/crypto/aes-internal.o \
                core/crypto/aes-internal-enc.o \

2.3、failed to insert

/lib/modules/5.4.61/8821cs.ko

root@TinaLinux:/# insmod /lib/modules/5.4.61/8821cs.ko

[   58.980094] 8821cs: module uses symbol (kernel_read) from namespace VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver, but does not import it.

[   58.995252] 8821cs: Unknown symbol kernel_read (err -22)

[   59.001367] 8821cs: module uses symbol (kernel_write) from namespace VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver, but does not import it.

[   59.016592] 8821cs: Unknown symbol kernel_write (err -22)

[   59.022939] 8821cs: module uses symbol (kern_path) from namespace VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver, but does not import it.

[   59.037878] 8821cs: Unknown symbol kern_path (err -22)

failed to insert /lib/modules/5.4.61/8821cs.ko

内核命名空间未导入的原因,添加如下修改

diff --git a/drivers/net/wireless/wlan_src/core/rtw_mem.c b/drivers/net/wireless/wlan_src/core/rtw_mem.c
index d42a4fb..0e7bb70 100755
--- a/drivers/net/wireless/wlan_src/core/rtw_mem.c
+++ b/drivers/net/wireless/wlan_src/core/rtw_mem.c
@@ -21,6 +21,9 @@ MODULE_DESCRIPTION("Realtek Wireless Lan Driver");
 MODULE_AUTHOR("Realtek Semiconductor Corp.");
 MODULE_VERSION("DRIVERVERSION");
 
+MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
+MODULE_IMPORT_NS(CRYPTO_INTERNAL);
+
 /* for MAX_RECVBUF_SZ */
 #if defined(CONFIG_RTL8188E)
 #include <rtl8188e_hal.h>
diff --git a/drivers/net/wireless/wlan_src/os_dep/linux/os_intfs.c b/drivers/net/wireless/wlan_src/os_dep/linux/os_intfs.c
index 3f03174..fb99801 100755
--- a/drivers/net/wireless/wlan_src/os_dep/linux/os_intfs.c
+++ b/drivers/net/wireless/wlan_src/os_dep/linux/os_intfs.c
@@ -22,6 +22,9 @@ MODULE_DESCRIPTION("Realtek Wireless Lan Driver");
 MODULE_AUTHOR("Realtek Semiconductor Corp.");
 MODULE_VERSION(DRIVERVERSION);
 
+MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
+MODULE_IMPORT_NS(CRYPTO_INTERNAL);
+
 /* module param defaults */
 int rtw_chip_version = 0x00;
 int rtw_rfintfs = HWPI;

重新编译,驱动加载没问题

2.4、打印太多 

修改输出等级

+++ b/drivers/net/wireless/wlan_src/Makefile
@@ -106,7 +106,7 @@ endif
 CONFIG_RTW_DEBUG = y
 # default log level is _DRV_INFO_ = 4,
 # please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
-CONFIG_RTW_LOG_LEVEL = 4
+CONFIG_RTW_LOG_LEVEL = 2
 
 # enable /proc/net/rtlxxxx/ debug interfaces
 CONFIG_PROC_DEBUG = y

2.5、添加firmware文件

2.5.1、添加WiFi射频功率文件

WiFi驱动默认读取/lib/firmware/里面的功率文件,如果要改路径直接修改Makefile文件

EXTRA_CFLAGS += -DREALTEK_CONFIG_PATH=\"/lib/firmware/\"

文件存储仓库路径:platform/allwinner/wireless/firmware

编译时拷贝的规则仓库路径:openwrt/openwrt

diff --git a/package/firmware/linux-firmware/Makefile b/package/firmware/linux-firmware/Makefile
old mode 100644
new mode 100755
index be1a937..b7f66ee
--- a/package/firmware/linux-firmware/Makefile
+++ b/package/firmware/linux-firmware/Makefile
@@ -67,6 +67,9 @@ PKG_FILE_DEPENDS += $(XR819_FW)
 XR819A_FW := $(LICHEE_CBBPKG_DIR)/allwinner/wireless/firmware/xr819a
 PKG_FILE_DEPENDS += $(XR819A_FW)
 
+FCS950R_FW := $(LICHEE_CBBPKG_DIR)/allwinner/wireless/firmware/fcs950r
+PKG_FILE_DEPENDS += $(FCS950R_FW)
+
 include $(INCLUDE_DIR)/package.mk
 
 define firmware/config
diff --git a/package/firmware/linux-firmware/fcs950r.mk b/package/firmware/linux-firmware/fcs950r.mk
new file mode 100755
index 0000000..2e679fd
--- /dev/null
+++ b/package/firmware/linux-firmware/fcs950r.mk
@@ -0,0 +1,11 @@
+Package/fcs950r-firmware = $(call Package/firmware-default,QUECTEL FCS950R firmware)
+
+SRC_CODE_DIR:=$(FCS950R_FW)
+
+define Package/fcs950r-firmware/install
+       $(INSTALL_DIR) $(1)/$(FIRMWARE_PATH)
+       $(INSTALL_DATA) $(SRC_CODE_DIR)/PHY_REG_PG.txt $(1)/$(FIRMWARE_PATH)/PHY_REG_PG.txt
+       $(INSTALL_DATA) $(SRC_CODE_DIR)/TXPWR_LMT.txt $(1)/$(FIRMWARE_PATH)/TXPWR_LMT.txt
+endef
+
+$(eval $(call BuildPackage,fcs950r-firmware))

返回SDK路径,执行make menuconfig

2.5.2、缺少/etc/udhcpd.leases

udhcpd: can't open '': No such file or directory

执行udhcpd -fS /etc/udhcpd.conf后报错

root@TinaLinux:/# ap.sh
udhcpd: started, v1.33.2
udhcpd: max_leases=235 is too big, setting to 155
udhcpd: can't open '': No such file or directory
[  207.425003] start_addr=(0x8000), end_addr=(0x10000), buffer_size=(0x8000), smp_number_max=(4096)
[  207.452595] RTW: nolinked power save leave
VLAN: vlan_set_name_type: SET_VLAN_NAME_TYPE_CMD name_type=2 failed: Package not installed
[  207.787132] RTW: assoc success
[  207.791508] RTW: set group key camid:0, addr:90:cd:1f:06:ed:92, kid:1, type:TKIP
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED

udhcpd.conf配置文件没有配置lease_file导致,添加

 # The location of the leases file
-#lease_file    /var/lib/misc/udhcpd.leases
+lease_file     /etc/udhcpd.leases

可以在执行udhcpd.conf文件之前用.sh脚本文件判断/etc/udhcpd.leases文件

+#!/bin/sh
+
+if [[ ! -f "/etc/udhcpd.leases" ]];then
+       touch /etc/udhcpd.leases
+fi

三、4G模块拨号上网

usb0网卡接口默认不会启动,可以使用ifconfig -a查看是否存在,存在则说明4G模块驱动正常,使用ifconfig usb0 up启动,然后使用udhcpc -i usb0自动分配ip和dns,拨号成功就可以访问外网

使用busybox microcom -t 5000 /dev/ttyUSB*,具体要看系统生成的节点,-t 5000是无操作5秒后退出命令行模式,如下/dev/ttyUSB0无法输入命令,/dev/ttyUSB1可以

root@TinaLinux:/# busybox microcom -t 5000 /dev/ttyUSB0
root@TinaLinux:/# busybox microcom -t 5000 /dev/ttyUSB1
at
OK
 
# 根据SIM卡运营商输入,移动:CMNET,电信:CTNET,联通:3GNET
# 如下是移动卡的拨号指令,返回OK说明配置成功
AT+CGDCONT=1,"IP","CMNET"
OK
AT+QNETDEVCTL=3,1,1
OK
 
# 可以使用AT+QNETDEVCTL?指令,查看是否联网成功(如下最后一个参数为1,表示联网成功)
AT+QNETDEVCTL?
+QNETDEVCTL: 3,1,1,1
 
# 也可以使用ping测试
root@TinaLinux:/# ping -I usb0 -c 1 baidu.com
PING baidu.com (110.242.68.66): 56 data bytes
64 bytes from 110.242.68.66: seq=0 ttl=49 time=105.210 ms
 
--- baidu.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 105.210/105.210/105.210 ms

四、连接WiFi上网

使用iptables转发,使手机等设备连接WiFi后能够正常上网

2.4GHz频段配置

+++ b/package/network/Test/files/etc/hostapd.conf
@@ -0,0 +1,13 @@
+interface=wlan0
+driver=nl80211
+ieee80211n=1
+ctrl_interface=/var/run/hostapd
+hw_mode=g
+channel=6
+ssid=TestWiFi
+
+wpa=2
+wpa_passphrase=12345678
+wpa_key_mgmt=WPA-PSK
+rsn_pairwise=CCMP TKIP
+wpa_pairwise=TKIP CCMP

5GHz频段配置

+++ b/package/network/Test/files/etc/hostapd_5g.conf
@@ -0,0 +1,18 @@
+interface=wlan0
+driver=nl80211
+ctrl_interface_group=0
+ctrl_interface=/var/run/hostapd
+beacon_int=100
+ssid=TestWiFi_5G
+
+country_code=CN
+channel=149
+hw_mode=a
+ieee80211n=1
+ht_capab=[HT20][HT40+][HT40-][SHORT-GI-40][SHORT-GI-20]
+
+wpa=2
+wpa_passphrase=12345678
+wpa_key_mgmt=WPA-PSK
+rsn_pairwise=CCMP TKIP
+wpa_pairwise=TKIP CCMP

iptables网络地址转发,和hostapd配置,调用时执行wifiApMode.sh hostapd.conf

+++ b/package/network/Test/files/usr/bin/wifiApMode.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [[ ! -f "/etc/udhcpd.leases" ]];then
+       touch /etc/udhcpd.leases
+fi
+ifconfig wlan0 192.168.2.1 netmask 255.255.255.0 up
+udhcpd -fS /etc/udhcpd.conf&
+iptables -A FORWARD -s 192.168.2.0/24 -o usb0 -j ACCEPT
+iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT
+iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -o usb0 -j MASQUERADE
+echo 1 > /proc/sys/net/ipv4/ip_forward
+
+hostapd -B $1
+echo "set ap mode($1)!"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值