目前分類:Realtek SDK (22)

瀏覽方式: 標題列表 簡短摘要
  • users/boa/apmib/apmib.h, add MIB ID (16000~32767), 1~15999 for Realtek.
  • users/boa/apmib/mibdef.h, add MIBDEF, 找 #endif // #ifdef MIB_IMPORT 補在上面, 也就是放在最後.
  • users/boa/utils/flash.c, 把預設值寫到 writeDefault 函數, 因為 RTL_DEF_SETTING_IN_FW 就不用了.
  • users/boa/apmib/upmib.h, 修改 MIB_MIB_VER 的值, 因為 RTL_DEF_SETTING_IN_FW 就改去修改 users/boa.defconfig/config-example.txt 的 MIB_VER 值.
  • MIB_VER 如果與 current value 不同時, 就會把 new_mib[] 值新增, update_mib 值更新, 如果都沒有會直執行 flash reset 讀取 default value.
  • 最後記得修改 users/boa.defconfig/config-example.txt, 把新的欄位加上去.

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • flash set WLAN_11N_ONOFF_TKIP 1
  • --- a/rtl819x/users/boa/html/wlsecurity_all.htm
    +++ b/rtl819x/users/boa/html/wlsecurity_all.htm
    @@ -484,7 +484,7 @@ function show_authentication()
            }else if (wep_type.selectedIndex ==2 && ap_mode!=1){//ap mode
                    get_by_id("setting_wpa").style.display = "";
                    //if(ap_mode == 1)//client mode 
    -               //      get_by_id("show_wpa_cipher").style.display = "";
    +                       get_by_id("show_wpa_cipher").style.display = "";
                    //if(ap_mode != 1)//AP mode
                            get_by_id("show_wpa2_cipher").style.display = "";       
                    show_wpa_settings();
    
  • --- a/rtl819x/users/boa/html/wlsecurity_all.htm
    +++ b/rtl819x/users/boa/html/wlsecurity_all.htm
    @@ -1271,7 +1271,7 @@ function ValidateForm(passForm)
            ap_mode = 1; //wireless profile force client mode;
        }
                                                            
    -   //  document.write('
    
    ');
    +   document.write('
    
    ');
        if (ap_mode != 1)
            document.write('
    
    ');
        //if (ap_mode != 1)
    

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

sysconf init gw all

  • /etc/init.d/rcS
  • /bin/init.sh gw all ==> sysconf init gw all
  • +sysconf.c -> main(), sysconf 的主程序
  • ++setinit.c -> set_init(), 根據參數 init 會呼叫 set_init()
  • 然後就沒有了, 所以主要工作都在 set_init()。

set_init()

  • sethostname() 設定 host name。
  • ifconfig hw ether 設定 mac address,值存在 hw config,HW_NIC0_ADDR,HW_WLAN0_WLAN_ADDR,HW_WLAN1_WLAN_ADDR 等。
  • flash set_mib wlan0,flash set_mib wlan1。
  • setbridge(),設定 bridge。
  • set_log(),設定 log process。
  • set_lan_dhcpd(),設定 dhcp server。
  • start_wlanapp(),設定 wireless interface。
  • start_wan(),設定 wan interface。
  • start_upnpd(),設定 upnpd。
  • start_wlan_by_schedule(),設定 Wireless Schedule。
  • To enable/disable ipv6 passthru no matter wan is connected or not
  • enable igmp snooping
  • start_mount(),usb mount。
  • start_vsftpd(),vsftpd server。
  • start_samba(),samba server。
  • timelycheck,watch dog。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • boa\system\sysconf.c, main()
  • boa\system\set_init.c, setinit()
  • boa\system\set_init.c, up_mib_value()
  • apmib_get(MIB_MIB_VER, (void *)&old_ver) 讀取目前的 MIB_VER 值。
  • apmib_getDef(MIB_MIB_VER,(void *)&new_ver) 讀取預設的 MIB_VER 值。
  • 所以只要把預設的 MIB_VER 值加1就會在更新firmware時,順便 load default value。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • rtl819x\users\boa\system\set_firewall.c, setRulesWithOutDevice(), system("updatefw ; sleep 2; /tmp/fw.sh");
  • rtl819x\users\autoexec\updatefw.c 產生 /tmp/fw.sh
  • 再去呼叫 /tmp/fw.sh

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

image start position

  • check_image_header() 用來找尋所有的表頭,包含 linux 及 rootfs。
  • check_system_image() 用來找尋 linux 表頭位置。
  • check_rootfs_image() 用來找尋 rootfs 表頭位置
  • CODE_IMAGE_OFFSET,CODE_IMAGE_OFFSET2,CODE_IMAGE_OFFSET3 用來記錄 linux 啟始位置,會先檢查。找不到時會根據 config 的 CONFIG_LINUX_IMAGE_OFFSET_START,CONFIG_LINUX_IMAGE_OFFSET_END,CONFIG_LINUX_IMAGE_OFFSET_STEP,來找尋 linux 的位置。
  • ROOT_FS_OFFSET,ROOT_FS_OFFSET_OP1,ROOT_FS_OFFSET_OP2 用來記錄 rootfs 啟始位置,會先檢查。找不到時會根據 config 的 CONFIG_ROOT_IMAGE_OFFSET_START,CONFIG_ROOT_IMAGE_OFFSET_END,CONFIG_ROOT_IMAGE_OFFSET_STEP,來找尋 rootfs 的位置。
  • 所以有重新改變 linux 或 rootfs 的啟始位置時,記得順便變更 CODE_IMAGE_OFFSET 及 ROOT_FS_OFFSET,這樣省略找尋的時間,讓開機快一點點。

ip address

  • boot ip address 是 tftp server ip。
  • tftp server ip 要修改 bootcode_APH60c\boot\init\eth_tftpd.c 的 tftpd_entry()
    if(*ptr == tftp_sign)
            arptable_tftp[TFTP_SERVER].ipaddr.s_addr = *ptr2;       
    else
            arptable_tftp[TFTP_SERVER].ipaddr.s_addr = IPTOUL(192,168,1,97);
    
    #else
            arptable_tftp[TFTP_SERVER].ipaddr.s_addr = htonl((unsigned int)(IPTOUL(192,168,1,6)));
    #endif
    
    arptable_tftp[TFTP_CLIENT].ipaddr.s_addr = htonl((unsigned int)(IPTOUL(192,162,1,116)));
    
  • http server ip address 不用修改,是跟著 tftp server ip address 變更。
  • dhcp server ip 要修改 bootcode_APH60c\boot\init\dhcpd.c 的 dhcps_entry()

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • rtl819x\Makefile --> $(MAKE) -C $(DIR_BOARD) image
    所以 make image 直接跳 rtl819x\boards\rtl8197F\Makefile 看即可
  • rtl819x\boards\rtl8197F\Makefile --> $(MAKE) -C $(DIR_LINUX)/rtkload

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

Error opening terminal: xterm.
make: *** [config] Error 1
  • 解決方式
  • export TERMINFO=/lib/terminfo

gzip_wrapper.c:23:18: fatal error: zlib.h: No such file or directory
compilation terminated.
  • 解決方式
  • sudo apt-get install zlib1g-dev

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

執行 iptables -A FORWARD -m physdev --physdev-in wlan1-va0 -d 203.205.128.0/19 -j ACCEPT 卻出現 iptables: No chain/target/match by that name. 的錯誤。

google 許久都找不到答案,檢查 source 發現 linux-3.10/net/netfilter/nf_queue.c 有一段程式碼。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • 根據 rtl819x/Makefile 內容,rtl819x/config/genconfig 會產生 Kconfig。
  • 根據 genconfig 的內容,Target 的選項為 rtl819x/boards 內的目錄,所以只要留下必要的即可。
  • 根據 genconfig 的內容,toolchain 的選項為 rtl819x/toolchain 內的目錄,所以只要留下必要的即可。
  • 根據 genconfig 的內容,Board Configuration 的選項為 rtl819x/boards/rtl8197F/board-configuration.in 的文件,只要留下必要的選項即可。
  • etc/linux/busybox/user 的預設 .config 為 rtl819x/boards/rtl8197F/config.busybox-1.13.{Board Configuration} 等等。
  • 比如我選 Board Configuration 為 RTL8197F_8812BR_8367R_GW 則預設為
    1. etc.default
    2. config.busybox-1.13.RTL8197F_8812BR_8367R_GW
    3. config.linux-3.10.RTL8197F_8812BR_8367R_GW
    4. config.users.RTL8197F_8812BR_8367R_GW

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

linux 3.10

  • +Device Drivers
  • ++Character devices
  • +++[*] Unix98 TTY support
  • +++[*] Support multiple instances of devpts

busybox 1.13

  • +Busubox Settings
  • ++General Configuration
  • +++[*] Use the devpts filesystem for Unix98 PTYs
  • +Login/Password Management Utilities
  • ++[*] login
  • ++[*] Support for /etc/nologin
  • ++[*] Support for /etc/securetty
  • +Networking Utilities
  • ++[*] telnetd
  • ++[*] Support standalone telnetd (not inetd only)

/etc/init.d/rcS

  • mount -t devpts devpts /dev/pts
  • /bin/telnetd &

參考資料


台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • Apr 13 Thu 2017 18:02
  • romfs

  • rtl819x/Makefile 內的 DIR_BOARD 指向 $(DIR_ROOT)/target
  • rtl819x/target 連結到 rtl819x/boards/rtl8197F
  • rtl819x/Makefile 會執行 $(MAKE) -C $(DIR_BOARD) romfs
  • rtl819x/boards/rtl8197F/Makefile 會執行 $(ROMFSINST) etc /etc
  • rtl819x/boards/rtl8197F/etc 連結到 rtl819x/boards/rtl8197F/etc.default
  • 所以只要修改 rtl819x/boards/rtl8197F/etc.default 內的檔案即可.
  • rcS 要修改 rtl819x/boards/rtl8197F/etc.default/init.d/rcS_GW

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • __INIT (head.S)
  • init_arch()
  • +start_kernel() -- return_addr=0
  • ++doBooting(flag, addr=0, ....)
  • +++goToLocalStartMode(addr=0, ...)

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

form

  • main()
  • loop()
  • process_requests()
  • write_body()
  • init_form()
  • handleForm()
  • 比對 root_form 的字串,再執行相對應的函數。

asp

  • main()
  • loop()
  • process_requests()
  • read_header()
  • process_header_end()
  • init_get2()
  • handleScript()
  • 比對 root_asp 的字串,再執行相對應的函數。

firmware upload

  • formUpload()
  • 比對 FW_HEADER_WITH_ROOT(cr6c),設定 isValidfw=1 及 flag=1。
  • fwChecksumOk() 檢查 checksum。
  • 設定 isFWUPGRADE=1,導頁到 COUNTDOWN_PAGE(/countDownPage.htm)

COUNTDOWN_PAGE

  • main()
  • loop()
  • process_requests()
  • read_header()
  • process_header_end()
  • translate_uri()
  • 因為 isFWUPGRADE=1,所以設定 isREBOOTASP=1 及 isFWUPGRADE=2。
  • 因為 isREBOOTASP=1 及 isFWUPGRADE!=0,在 loop() 會跳到 ToUpgrade 執行 FirmwareUpgrade()。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • #define COMPRESS_MIB_SETTING
    #define MIB_TLV

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • +rtkxxpart_init() - drivers/mtd/rtkxxpart.c
  • ++register_mtd_parser() - drivers/mtd/mtdparts.c
  • ----------------------------
  • m25p_probe() - drivers/mtd/devices/m25p80.c
  • +mtd_device_parse_register() - drivers/mtd/mtdcore.c
  • ++parse_mtd_partitions() - drivers/mtd/mtdparts.c
  • +++parse_fn() - drivers/mtd/mtdparts.c
  • ===rtkxxpart_parse() - drivers/mtd/rtkxxpart.c
  • *** 根據 rtl819x_parts 來切 partition
  • *** 1st partition 大小為 CONFIG_RTL_ROOT_IMAGE_OFFSET.
  • *** 2nd partition 大小為 RTK_FLASH_SIZE-CONFIG_RTL_ROOT_IMAGE_OFFSET.
  • ++add_mtd_partitions() - drivers/mtd/mtdparts.c
  • +++add_mtd_device() - drivers/mtd/mtdcore.c

CONFIG_RTL_ROOT_IMAGE_OFFSET

  • Machine selection
  • +System Configuration
  • ++root image offset in flash

RTK_FLASH_SIZE

  • Machine selection
  • +System Configuration
  • ++Size of Flash

.................

  • +rtk_nand_profile() - drivers/mtd/rtk_nand_sd.c
  • ++mtd_device_parse_register() - drivers/mtd/mtdcore.c
  • +++parse_mtd_partitions() - drivers/mtd/mtdparts.c
  • ++++get_partition_parser() - drivers/mtd/mtdparts.c
  • +++add_mtd_partitions() - drivers/mtd/mtdparts.c
  • ++++allocate_partition() - drivers/mtd/mtdparts.c

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

反查
  • 透過 iwpriv ra0 show stainfo 來反查 MCS 的值
  • ap_cfg.c: pEntry->HTPhyMode.field.MCS
讀值設定
  • 設定值存在 /etc/Wireless/RT2860/RT2860.dat。
  • rt_profile.c: RTMPReadParametersHook()
  • cmm_profile.c: RTMPSetProfileParameters()
  • cmm_profile.c: HTParametersHook()
nvram 儲存值
  • WirelessMode: 設定 wireless mode,比如 11b,11b/g,11b/gn。
    driver 值存在 pAd->ApCfg.MBSSID[i].PhyMode, pAd->CommonCfg.PhyMode 及 pAd->CommonCfg.DesiredPhyMode。
  • FixedTxMode: CCK,OFDM,HT,作用不明。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

ipsec.conf

# ipsec.conf - strongSwan IPsec configuration file

config setup

conn %default
        authby=secret
        keyexchange=ikev1
        mobike=no
        ike=aes128-sha1-modp1024
        esp=aes128-sha1
        left=172.16.9.21
        leftsubnet=192.168.11.0/24
        leftfirewall=yes

conn RTX1000
        right=172.16.9.22
        rightsubnet=192.168.22.0/24
        auto=start

ipsec.secrets

# ipsec.secrets - strongSwan IPsec secrets file

: PSK "abcd1234"

Yamaha config

console character ascii
ip route default gateway 172.16.9.254
ip route 192.168.11.0/24 gateway tunnel 1
ip lan1 address 192.168.22.1/24
ip lan2 address 172.16.9.22/24
ip lan2 nat descriptor 1
tunnel select 1
 ipsec tunnel 101
  ipsec sa policy 101 1 esp aes-cbc sha-hmac
  ipsec ike group 1 modp1024
  ipsec ike local address 1 172.16.9.22
  ipsec ike pre-shared-key 1 text abcd1234
  ipsec ike remote address 1 172.16.9.21
 tunnel enable 1
tunnel select none
nat descriptor type 1 masquerade
nat descriptor address outer 1 172.16.9.22
nat descriptor address inner 1 192.168.22.1-192.168.22.254
nat descriptor masquerade static 1 1 172.16.9.22 udp 500
nat descriptor masquerade static 1 2 172.16.9.22 esp
dhcp service server
dhcp scope 1 192.168.22.100-192.168.22.254/24
dns server 8.8.8.8

iptables


雖然已經設定 leftfirewall=yes,strongSwan 會自動設定 firewall,但是還缺少一些設定。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

整合

  • 將 gmp-6.1.0.tar.bz2 解壓到 user 目錄。
  • 修改 user/Makefile,在 # application 下面新增一行。
    # application
    app_y += gmp-6.1.0
    
  • 修改 user/Makefile,在 prepare: 下面新增數行。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

修改 buildlin.sh

  • 刪除 if [ ! -f /usr/include/gmp.h ]; 這一整段。我是自己 build gmp for mips,不能用 x86 版本。
  • export PREFIX=../rtl819x/toolchain/msdk-4.4.7-mips-EB-3.10-0.9.33-m32t-131227b
  • export DESTDIR=/tmp/openswan
  • export ARCH=mips
  • export OSDEP=linux
  • export CC=$PREFIX/bin/mips-linux-gcc
  • export GCC=$PREFIX/bin/mips-linux-gcc
  • export LD=$PREFIX/bin/mips-linux-ld
  • export RANLIB=$PREFIX/bin/mips-linux-ranlib
  • export AR=$PREFIX/bin/mips-linux-ar
  • export AS=$PREFIX/bin/mips-linux-as
  • export STRIP=$PREFIX/bin/mips-linux-strip
  • export LD_LIBRARY_PATH=$PREFIX/lib/gcc/mips-linux-uclibc/4.4.7/
  • export PATH=$PATH:$PREFIX/bin
  • export USERCOMPILE="-fPIC -I../gmp-6.1.0 -I$PREFIX/include -L$PREFIX/lib"
  • export USERLINK="-L../gmp-6.1.0/.libs"
  • export KERNELSRC=../rtl819x/linux-3.10

主要是參考 CROSSCOMPILE.sh,這個檔案是寫給 arm 用的,但我的是 mips,所以需要小修改。

編譯

  • 修改 buildlin.sh
  • 執行 buildlin.sh
  • 編譯出來的檔案都放在 OBJ.linux.mips,所以只要把該目錄刪除就相當於做 make clean。
  • 如果要做 install,要修改 buildlin.sh,make USE_OBJDIR=true programs 改成 make USE_OBJDIR=true programs install。

問題排除

 CC      /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.o
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:8: error: variable '__this_module' has initializer but incomplete type
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:9: error: unknown field 'name' specified in initializer
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:9: warning: excess elements in struct initializer
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:9: warning: (near initialization for '__this_module')
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:10: error: unknown field 'init' specified in initializer
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:10: warning: excess elements in struct initializer
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:10: warning: (near initialization for '__this_module')
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:14: error: unknown field 'arch' specified in initializer
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:14: error: 'MODULE_ARCH_INIT' undeclared here (not in a function)
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:14: warning: excess elements in struct initializer
/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:14: warning: (near initialization for '__this_module')
make[3]: *** [/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.o] Error 1
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/home/enos/FGN-1000/fib003_res/rtl819x/linux-3.10'
make[1]: *** [module26] Error 2
make[1]: Leaving directory `/home/enos/FGN-1000/openswan-2.6.43.1'
make: *** [module] Error 2

這是因為 kernel module 動態載入功能沒開啟,把 Enable loadable module support 打開即可。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

1 2