Attribute System

ジャンク奇行。 ときどき ラクガキ。

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

WER-AMG54 + openwrt ビルド編

2009-12-27 01:43:01 | wlan
前回までのくだりで そのままでは WER-AMG54 で openwrt が動かなかったので
いっちょビルドしてみよう、ということになりました。
どこかに よさげな howto がないかなと思っていたら、
本家 openwrt wiki に buildroot というページがありました。
英語ですが がんばってこれの通りにやってみました。

まずどれか Linux ディストリビュージョンを選ばなくてはなりません。
マシンを用意することも考えていたのですが、vm のページで VirtualBox + Debian
の例があったので これもこのまますることにします。

Debian のページの クイックインストール解説 を読みインストール開始。
インストールメディアは ネットワークインストールCDを選びました。
デスクトップ環境はいらないので ベースシステムだけ選択しました。
そのほかもディフォルトです。

なんとコンソールが日本語の表示ができません。
シェルが無駄に日本語対応しているので 文字化けして読めませんw。
クイックインストール解説の通りモジュールをロードしましたが
その次の jfbterm はインストールが必要なようです。
「どうせ SSH へ TeraTerm でアクセスする」という人は放置でも大丈夫でしょう。

wiki vm ページに戻って VM Configuration の項のコマンド3行を設定します。
ホストマシンの localhost:22 からゲストマシンの SSH にアクセスする設定みたいです。
やっていることは 仮想 LAN が NAT 環境なので、ルータのポートを空けるイメージですが、
GUI からの設定方法は結局分かりませんでした。素直にコマンドを入力でいきます。
"" の部分に 自分で作ったゲストマシンの名前を入力します。

やっと buildroot まできました。
subversion, build-essential, screen をインストールします。
screen は使わない気がしますが…。
GetSource からビルドするバージョンのコマンドを選んで入力します。
今回は 7.09 と 8.09 を試しました。
取得したフォルダの中に入って、
make menuconfig

します。すると足りないソフトを表示してくれるので 適宜入れましょう。
wiki にも Debian 5.0 では autoconf, bison, flex, gawk, ncurses-dev, unzip, zlib1g-dev
が必要だと書いてありますので、そのまま入れてもいいでしょう。

menuconfig が通るようになったら、保存せずに終了し
wiki WHR-HP-AG108 ページの Prepare firmware image の項の通りの修正をします。
具体的には 7.09 では ./package/madwifi/Makefile 中の
HAL_TARGET:=ap51 の部分を HAL_TARGET:=ap30 に変更します。
8.09 では ap51 という部分がなかったので mips-eb を ap30 に変えてみたのですがダメでした。
そもそも madwifi の HAL は、問題だった kernel panic ではまだ読み込んでないと思うのです。
予想では JFFS2 の最後のほうか、msgmni の設定か io scheduler のあたりでコケるのだと思います。
分かったところで、私にはどうしようもありませんが…。
WHR-HP-AG108/WHR-HP-AMPG でも同じようにコケるのか気になるところです。

つづいて menuconfig で kernel を atheros に、package 類はディフォルトか 適宜変更して保存します。
そしたらあとは make するだけです。
ネット情報だと 4時間くらいとあったのですが うちでは 12時間近くかかりましたw
マシンが非力なうえ、仮想マシンを使ってますので仕方ありません。
この menuconfig、すごい自動化であり プリインストールパッケージを選べたりと大変便利です。
機会があったら いじり倒したいですね。その後 12時間という恐怖がありますが…。

出来上がったイメージをホストマシンにコピーする方法は
折角 Windows で tftp サーバが動いているので、
私は tftp クライアントをインストールして put したのですが、あとで WinSCP なるものを知りました。
SSH トンネリングで ファイルを転送するらしいです。
ファイル数が少なければ tftp でも十分ですが、WinSCP 面白いです。

インストールはこんな感じです。環境により適宜読み替えてください。
WER-AMG54 の Redboot は lzma に対応していなかったので gz 版の kernel を使います。
また fis free で空き領域を表示してくれないので、自分で計算します。
RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
    Warning: device contents not erased, some blocks may not be usable
RedBoot> load -r -b 0x80041000 vmlinux.gz
Raw file loaded 0x80041000-0x80140fff, assumed entry at 0x80041000
RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xBE000000  0xBE000000  0x00050000  0x00000000
RedBoot config    0xBE3DF000  0xBE3DF000  0x00001000  0x00000000
FIS directory     0xBE3D0000  0xBE3D0000  0x0000F000  0x00000000
RedBoot> fis create -f 0xbe050000 -l 0x00100000 -r 0x80041000 -e 0x80041000 vmlinux.gz
RedBoot> load -r -b 0x80041000 root.squashfs
Raw file loaded 0x80041000-0x80160fff, assumed entry at 0x80041000
RedBoot> fis create -f 0xbe150000 -l 0x00280000 -b 0x800410000 -e 0x00000000 rootfs
RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xBE000000  0xBE000000  0x00050000  0x00000000
RedBoot config    0xBE3DF000  0xBE3DF000  0x00001000  0x00000000
FIS directory     0xBE3D0000  0xBE3D0000  0x0000F000  0x00000000
vmlinux.gz        0xBE050000  0x80041000  0x00100000  0x80041000
rootfs            0xBE150000  0xBE150000  0x00280000  0x00000000
RedBoot> fconfig
Run script at boot: true
Boot script: 
.. fis load linux
.. exec
Enter script, terminate with empty line
>> fis load -d vmlinux.gz
>> exec
>> 
Boot script timeout (1000ms resolution): 3
Use BOOTP for network configuration: false
Gateway IP address: 
Local IP address: 192.168.1.1
Local IP address mask: 255.255.255.0
Default server IP address: 192.168.1.2
Console baud rate: 9600
DNS server IP address: 
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue (y/n)? y
RedBoot> reset
... Resetting.

とまぁ 駆け足でしたがなんとか buildroot することができました。
結果も 7.09 はちゃんと動きまして、うれしい限りです。
次回は 設定をいじってみようかな?
コメント (2)

WER-AMG54 + openwrt

2009-12-17 22:06:28 | wlan
dd-wrt のインストール成功に気をよくして openwrt も試してみます。
kamikaze 8.09.1 と 8.09.2RC2 を入れてみましたが、
ブート途中で Kernel panicになって動きません。
8.09.1 のブートメッセージです。

Linux version 2.6.26.8 (andy@stable-sandbox) (gcc version 4.1.2) #4 Mon Jun 1 22:06:38 UTC 2009
CPU revision is: 00018009 (MIPS 4Kc)
Determined physical RAM map:
 memory: 02000000 @ 00000000 (usable)
Initrd not found or empty - disabling initrd
Zone PFN ranges:
  Normal          0 ->     8192
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0:        0 ->     8192
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
Kernel command line: console=ttyS0,9600 rootfstype=squashfs,jffs2 init=/etc/preinit
Primary instruction cache 16kB, VIPT, 4-way, linesize 16 bytes.
Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 16 bytes
PID hash table entries: 128 (order: 7, 512 bytes)
console [ttyS0] enabled
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 29800k/32768k available (1886k kernel code, 2968k reserved, 308k data, 124k init, 0k highmem)
SLUB: Genslabs=6, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Mount-cache hash table entries: 512
net_namespace: 644 bytes
NET: Registered protocol family 16
Radio config found at offset 0x2000(0x100)
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
NET: Registered protocol family 1
ar531x: Registering GPIODEV device
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (SUMMARY)  c 2001-2006 Red Hat, Inc.
Reserved instruction in kernel code[#1]:
Cpu 0
$ 0   : 00000000 000b7fa2 00000000 00000000
$ 4   : 80290000 00000000 00000000 80290000
$ 8   : 00989680 00000000 80290000 00000000
$12   : 00000000 68ff2917 80290000 00000a00
$16   : 00000020 00000000 00989680 00000000
$20   : 00000000 0010c8e0 81c19de8 039ee86b
$24   : 00000000 00008000                  
$28   : 81c18000 81c19c08 80258990 8007ff7c
Hi    : 00000000
Lo    : 00000000
epc   : 8008003c     Not tainted
ra    : 8007ff7c Status: 10004002    KERNEL EXL 
Cause : 30800028
PrId  : 00018009 (MIPS 4Kc)
Modules linked in:
Process swapper (pid: 1, threadinfo=81c18000, task=81c14000, tls=00000000)
Stack : 81c19d18 800bf5e0 81c0b005 00000000 80258990 80260000 03c33608 000826fa
        8007eeb4 0000007c 80290000 363d7f80 81c19c80 0000007e 81c19c88 00000080
        80290000 80291e90 00000000 0065fe48 00000007 80260000 80290000 80291e90
        00000001 039f06a3 81c19de8 039ee86b 7fda60e0 8006c30c 00000003 00989680
        00000001 039f06a3 00000006 00989680 80083410 8008325c 7fda60e0 8008348c
        ...
Call Trace:[<800bf5e0>][<8007eeb4>][<8006c30c>][<80083410>][<8008325c>][<8008348c>]
[<8007b534>][<80082f28>][<8007c230>][<8007c0cc>][<8007c294>][<8007c0cc>][<80094cf0>]
[<80049614>][<80049614>][<80041ad0>][<80089e00>][<8006be10>][<8008b30c>][<80067328>]
[<80042148>][<8006740c>][<8004197c>][<8004197c>][<8004197c>][<800432e4>][<800432e4>]
[<80165cdc>][<8015f090>][<80061d4c>][<800623dc>][<800623f4>][<800623f4>][<800b8dd0>]
[<80103ab4>][<800b3edc>][<800b3e18>][<80272544>][<80280000>][<8006244c>][<8006244c>]
[<8027255c>][<800cef8c>][<802723c8>][<802723b4>][<80280000>][<80272544>][<80266618>]
[<8026657c>][<8004526c>][<8004525c>]

Code: 30783031  30303030  3030006d <6f646574> 74793000  302c6e2c  382c312c  68770065  74686164 
Kernel panic - not syncing: Fatal exception in interrupt

今度はkamikaze 7.09 です。
ブートはするが ath0 がアタッチできませんでした。

Linux version 2.6.21.5 (nbd@ds10) (gcc version 4.1.2) #2 Sun Sep 30 20:16:16 CEST 2007
CPU revision is: 00018009
Determined physical RAM map:
 memory: 02000000 @ 00000000 (usable)
Initrd not found or empty - disabling initrd
Built 1 zonelists.  Total pages: 8128
Kernel command line: console=ttyS0,9600 rootfstype=squashfs,jffs2 init=/etc/preinit
Primary instruction cache 16kB, physically tagged, 4-way, linesize 16 bytes.
Primary data cache 16kB, 4-way, linesize 16 bytes.
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
PID hash table entries: 128 (order: 7, 512 bytes)
Using 110.000 MHz high precision timer.
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 29748k/32768k available (1955k kernel code, 3020k reserved, 292k data, 116k init, 0k highmem)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
Radio config found at offset 0x2000(0x100)
Time: MIPS clocksource has been installed.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 1 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0xbc000003 (irq = 37) is a 16550A
eth0: Dropping NETIF_F_SG since no checksum feature.
eth0: Atheros AR231x: 00:0d:0b:70:37:7c, irq 3
eth1: Dropping NETIF_F_SG since no checksum feature.
eth1: Atheros AR231x: 00:0d:0b:70:37:7d, irq 4
physmap platform flash device: 00400000 at 1e000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
 Amd/Fujitsu Extended Query Table at 0x0040
physmap-flash.0: Swapping erase regions for broken CFI table.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
cmdlinepart partition parsing not available
Searching for RedBoot partition table in physmap-flash.0 at offset 0x3d0000
5 RedBoot partitions found on MTD device physmap-flash.0
Creating 5 MTD partitions on "physmap-flash.0":
0x00000000-0x00050000 : "RedBoot"
0x00050000-0x00150000 : "vmlinux.gz"
0x00150000-0x003d0000 : "rootfs"
0x00250000-0x003d0000 : "rootfs_data"
0x003d0000-0x003df000 : "FIS directory"
0x003df000-0x003e0000 : "RedBoot config"
nf_conntrack version 0.5.0 (256 buckets, 2048 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP vegas registered
NET: Registered protocol family 1
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (squashfs filesystem) readonly.
Freeing unused kernel memory: 116k freed
Warning: unable to open an initial console.
Algorithmics/MIPS FPU Emulator v1.5
- preinit -
mini_fo: using base directory: /
jffs2 not ready mini_fo: using storage directory: /tmp/root
yet; using ramdisk
- init -
init started:  BusyBox v1.4.2 (2007-09-29 07:21:40 CEST) multi-call binary

Please press Enter to activate this console. device eth0 entered promiscuous mode
br-lan: port 1(eth0) entering learning state
br-lan: topology change detected, propagating
br-lan: port 1(eth0) entering forwarding state
PPP generic driver version 2.4.2
wlan: 0.8.4.2 (svn r2568)
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.30.13 (AR5212, AR5312, RF2316, TX_DESC_SWAP)
ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (svn r2568)
ath_rate_minstrel: look around rate set to 10%
ath_rate_minstrel: EWMA rolloff level set to 75%
ath_rate_minstrel: max segment size in the mrr set to 6000 us
wlan: mac acl policy registered
ath_ahb: 0.9.4.5 (svn r2568)
MadWifi: unable to attach hardware: 'Hardware revision not supported' (HAL status 13)
MadWifi: unable to attach hardware: 'Hardware revision not supported' (HAL status 13)
jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
jffs2_build_filesystem(): unlocking the mtd device... done.
jffs2_build_filesystem(): erasing all blocks after the end marker... done.
mini_fo: using base directory: /
mini_fo: using storage directory: /jffs



BusyBox v1.4.2 (2007-09-29 07:21:40 CEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 KAMIKAZE (7.09) -----------------------------------
  * 10 oz Vodka       Shake well with ice and strain
  * 10 oz Triple sec  mixture into 10 shot glasses.
  * 10 oz lime juice  Salute!
 ---------------------------------------------------
root@OpenWrt:/#

汎用のイメージじゃだめなのでしょうか。
自分でコンパイルは…windowsじゃできないだろうし、私じゃぜんぜん分かりません。

ちょっと検索してみたところ、
WHR-HP-AG108 の情報が oldwiki にありました。

やっぱり自分でコンパイルしないとだめらしいです。

サンプルとして 7.09 をビルドしたイメージがおいてあったみたいですが、
残念ながらリンク切れでした。

次はこれかな?
果たして私にできるのでしょうか、あまり自信ありません。
コメント

WER-AMG54 + dd-wrt その2

2009-12-16 22:25:56 | wlan
前回 dd-wrt のインストールが成功したので、設定をいじってみました。
気になったこと。

チャンネルは auto にしているのですが、クライアントから確認したところ
11a が 34 や 38 になっていました。

どうやら無線PHYのリージョン(?)を JAPAN にすると
チャンネルが J52 しか選べなくなるようです。
せっかく W52, W53 に対応した製品なのに…。

これは OS 側の問題なのか Driver 側なのか、
どこに連絡すればいいのかなど 分からないのが残念です。

前回載せ忘れた情報。オリジナルの Flash レイアウト。
RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xBE000000  0xBE000000  0x00050000  0x00000000
RedBoot config    0xBE3DF000  0xBE3DF000  0x00001000  0x00000000
FIS directory     0xBE3D0000  0xBE3D0000  0x0000F000  0x00000000
vmlinux.bin.gz    0xBE050000  0x80002000  0x000D0000  0x80002400
rootfs            0xBE120000  0xBE120000  0x002A0000  0x00000000
inspection        0xBE3E0000  0xBE3E0000  0x00020000  0x00000000

コメント

WER-AMG54 + DD-WRT

2009-12-13 21:46:02 | wlan
無駄に死蔵している無線LANルータをいじりました。
今回は Buffalo の WER-AMG54。
11aと11bgの切替式で、11aが世界標準対応になったモデルです。
このシリーズは他に
 WER-AG54
 WER-A54G54
 WER-AM54G54
があります。

Atheros のチップセットを使っており、CPU AR5312, RAM 32MB, ROM 4MB という構成で、
チップセット名は AR5002AP-X2 というのみたいです。OS は Redboot + Linux でした。

中を見てみると、無線の PHY が2つあります。AR5112 と AR2112 です。

型番から予想するとそれぞれが 5GHz用 2.4GHz用と思われるのですが
AR5112 が 2.4/5GHz 両対応とのことで、切替式ならば これ一つで足りるはずです。

「これはシリーズのハードは同一でソフトか設定だけの違いだな。ハード的には a/bg 同時使用できそうだ」
と入手当時から思っていたのですが、放置し続けて来たのでした。

当然 Web Interface からは a/bg の同時使用はできないようになっています。
UART コンソールから ifconfig iwconfig iwpriv などでいじってみると
普通に同時使用ができてしまいました。以前はこれすら分からなかったよ。
しかし 私には 設定保存の仕組みなどがぜんぜん分かりません。

このままでは電源投入の度に UARTから設定しなおさないといけないので、
ここはひとつ ごみ化する覚悟で DD-WRT を突っ込んでみました。
UART は JP1/JP2 共通で 1pin から Vcc(3.3V), GND, TX, RX で、
9600, 8N1 とおなじみの設定です。
ちなみに 1pin は基板裏を見て四角いランドのピン などで確認します。

使用したのは Buffalo の WHR-HP-AG108 用のイメージで、バージョン 2.4preSP2 です。
web で情報収集していたところ CPU, RAM, ROM が同じというそっくりな構成なので、
そのまま動かないかなぁと思いました。
気になる手順ですが DD-WRT の Download に一緒においてある
whr-hp-ag108_flashing.txt の通りやってみました。

結果は成功です!
ただし、Atheros の Turbo モードは40MHz幅の認証を受けてない製品ですので
使ってはいけないのだと思います。送信出力とともに要注意事項です。
まぁ日本には Turbo モード対応の子機は少ないと思うけど。
コメント (4)