目前分類:Realtek SDK (25)

瀏覽方式: 標題列表 簡短摘要
  • tzset(): set timezone
  • parse_commandline(): parse command
  • fixup_server_root(): fix root
  • asp_init():...
  • read_config_files()
  • create_common_env(): Set up the environment variables for cgi
  • open_logs()
  • create_server_socket(): create a nonblocking socket server
  • build_needs_escape()
  • fork()
  • init_signals()
  • timestamp(): log boa start time
  • loop()

asp_init()

  • getWlStaNum(): 做了無用
  • apmib_init()
  • save_cs_to_file(): save current setup value to a file (/web/config.dat->/var/config.dat)
  • .....

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

rtl819x\linux-3.10\drivers\char\rtl_gpio.c

  • cat /proc/load_default 時 default_read_proc() 會輸出 default_flag.
  • reset_button_pressed() 會偵測 reset button.

rtl819x\linux-3.10\arch\mips\bsp\gpio.c

  • ...........gpio register
  • rtl819x_gpio_platdata rtl_pdata_btn1
  • rtl_pdata_btn1.gpio = BSP_RESET_BTN_PIN = BSP_GPIO_PIN_G6 = 6x8+6 = 54
  • BSP_GPIO_PIN_G6 in rtl819x\linux-3.10\arch\mips\bsp\bspchip.h
  • platform_device rtl_btn_dev1 = .platform_data = &rtl_pdata_btn1
  • platform_device __initdata *rtl_devs[] = { rtl_btn_dev1 }
  • platform_add_devices(rtl_devs) --> inert into rtl819x_btn_driver by .name="rtl819x_btn"
  • ...........gpio register
  • gpio_chip rtl819x_gpio_peripheral
  • gpiochip_add(&rtl819x_gpio_peripheral)
  • rtl819x_gpio_peripheral_init()
  • arch_initcall(rtl819x_gpio_peripheral_init)

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

  • 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()

  • if_readlist_proc(wlan_virtual_interface, "va", 0), 收集所有的 wifi 虛擬網卡, 存在 wlan_virtual_interface, 以空格為分界.
  • sethostname() 設定 host name。
  • ifconfig hw ether 設定 mac address,值存在 hw config,HW_NIC0_ADDR,HW_WLAN0_WLAN_ADDR,HW_WLAN1_WLAN_ADDR 等。
  • 根據 NUM_WLAN_INTERFACE, 把 wifi 裝置寫入 wlan_interface, wlan0 及 wlan1.
  • 根據 wlan_interface 來設定, flash set_mib wlan0,flash set_mib wlan1。
  • 根據 wlan_virtual_interface 來設定, flash set_mib wlan0 wlan1-va2 等等.
  • 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。

flash set_mib wlan0

  • wlan_idx=atoi(&argv[argNum][4]) 設定那一個 wlan 給 apmib_get() 讀取正確的值.
  • 設定完 wlan_idx, 就執行 initWlan().
  • struct wifi_mib 宣告放在 \linux-3.10\drivers\net\wireless\rtl8192cd\ieee802_mib.h
  • ifconfig %s down 先關閉 device
  • 讀取 MIB_WLAN_WLAN_DISABLED, 為1就直接結束.
  • ioctl(skfd, 0x8B42, &wrq_root) 把 kernel 的 mib 值讀回來.
  • ioctl(skfd, 0x8B43, &wrq_root) 把 mib 值寫入 kernel.
  • 0x8B42, 0x8B43 放在 \linux-3.10\drivers\net\wireless\rtl8192cd\8192cd_ioctl.c, rtl8192cd_ioctl().

flash set_mib wlan0

  • start_wan()
  • +set_staticIP()
  • ++setFirewallIptablesRules()
  • +set_dhcp_client()
  • ++/usr/share/udhcpc/eth1.bound
  • +++sysconf conn dhcp.....
  • ++++wan_connect()
  • +++++setFirewallIptablesRules()
  • +set_pppoe()
  • ++/bin/pppoe.sh
  • +++sysconf pppoe $*
  • ++++setFirewallIptablesRules()

台南小新 發表在 痞客邦 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) 人氣()

1 2