ポータブル無線LANルータNexx WT3020Fを使えなくしてしまった

Ethernetポートからアクセスできなくなってしまったので原始的方法で結線してシリアル接続しようとしたがうまくいかない

Ethernetポートからアクセスできなくなってしまったので原始的方法で結線してシリアル接続しようとしたがうまくいかない

OpenWrt化済みバッファロー無線LANルーターWZR-HP-AG300Hのブリッジ運用法を開始した。それにあたって、それを理解する上で必要なVLANについても少しばかし勉強した

ここで欲を出してしまった。以前、WANポート1つ・LANポート1つ・USB 2.0ポート1つのポータブル無線LANルータNexx WT3020Fを入手し、これにOpenWrtをインストールしたものの、ブリッジとして使うための設定をどうしてよいかわからず、ほっぽりっぱなしにしていた。本来の自宅内LANの整理計画では考えてなかったが、せっかくOpenWrtでのブリッジの設定のしかたもわかった(…とそのときは思った)ことだし、ついでにこいつも片付けとくか…。”Nexx WT3020 [OpenWrt Wiki]“を見て確認した上で以下の最新の安定版をインストールし作業にかかった。

https://downloads.openwrt.org/snapshots/trunk/ramips/mt7620/openwrt-ramips-mt7620-wt3020-8M-squashfs-sysupgrade.bin

が、簡単だとたかをくくっていたブリッジ設定はそうではなかった。後で詳しく述べるが、eth0とeth1からなる簡単な構成なのだろうと思っていたら、物理イーサーネットポートは1つ(etho0)で、内部的にスイッチがあり、LAN用とWAN用に別々にVLANを形成していた(eth0.1とeth0.2)。

ここで他の人がやっているように単にそのeth0.1とeth0.2を単にブリッジするだけで基本目的は達成されたのだと思うが、「Dumb AP / Access Point Only [OpenWrt Wiki]” の “For devices with switch only, e.g. WRT54GL“の項に相当するのでは、ならもっと簡略にできるんじゃ」、とVLAN機能を切って(それでも存在するデフォルトの)VLAN #1だけでやろうとしたのが運の尽き。理由が今となってはわからないがイーサーネットポート経由では全くアクセスできなくなってしまった。

しかし、OpenWrtにはありがたーいFailsafe機能が組み込まれており、設定でしくじってもこれでたいがいの場合復旧が可能。FailSafeモードで立ち上がったなら、telnet 192.168.1.1でログインした上で、Wiping JFFS2 file system (‘Factory reset’ to default config)にしたがってそれまでの設定のリセットも可能。逆にいうと、FailSafeモードで立ち上がったときには、暫定的にイーサーネットポートを介してルーターにアクセスできるようになっているだけで、それまでの設定はそのまま残っている。ハードウェアボタンでオールリセットできる仕様になっていればありがたかったが…。

ところが、今回はそのFailSafeモードすら利用できなくなった。正確には、FailSafeモードで立ち上がってはいるのだが、イーサーネットポートが然るべき設定になってないようで、ポート自身が生きてないような感じ。おそらくは”#18768 (Nexx WT3020 Failsafe does not work) – OpenWrt“が関係しているのではないかと。つまり、VLAN機能を切ってしまったのが仇になった模様。パッチは存在するがChaos Calmerには適用されてないという。

何かあってもFailSafeモードが使えると思っていたので慎重さを欠いたが、後になって考えると、それに頼り切らず、自分の設定がうまくいかなくても何らかの他の手段でルーターをアクセスできる手段を可能なら残しておくべきであった。例えば今回Wifiの設定はまだしていなかった。OpenWrtのインストール直後はwifiは無効化されているからだ。だが、もしwifiをlanとブリッジせず、独自にアクセスできるようにしておけば、Ethernetポート経由でのアクセスが不可能になってもwifiでアクセスできたはずだ。

また、”Nexx WT3020 [OpenWrt Wiki]“に記載があるBreedブートローダーについては詳細がパッとわからなかったので特にインストールしなかったが、”adventures in console window: Uboot alternative – Breed.“によればWebインターフェースを持つU-Boot亜種のようだ←独自ブートローダーのようだ。インンストールしておけばよかった…。以下Breedを使ったファームウェアのインストールの様子。

残る手はボード上に出ているUART端子を利用してシリアル接続し、U-Bootブートローダーに指示してTFTPでファームウェアを送り込んで焼かせるしかない。”Howto flash OpenWrt on Nexx WT3020” にシリアル接続のしかたが出ている(特に重要なのはTx, Rx, GNDの位置を示す図)ので、それを参照にしつつ本稿最初にある写真のように、USB TTLアダプタ(多分6Pin USB 2.0 to TTL UART Module Serial Converter CP2102 STC Replace Ft232 Moduleと同型)を利用してシリアル接続を試みてみたが、うまくいかなかった。はんだ付けのスキルはないので、テープで固定でなんとかならないかと思ったが、そうは問屋がおろさなかった。

なお、結局シリアル接続に成功してないので、確かなことは言えないが、このUSB TTLアダプタについては、”Serial Cables [OpenWrt Wiki]“にある以下の記載が当てはまるんじゃないかと思った。

Please note that some USB serial adapters (The CP2102-based one in the Amazon link above, for example) have the RX and TX connectors labelled according to what you should connect them to, not what they actually do. If connecting TX → RX and RX → TX doesn’t work for you, try switching to TX → TX and RX → RX.

↑が当てはまらないことが確認できた。

なお、OpenWrtのNexx WT3020用デフォルト設定はOpenWrtのWikiに記載されているが、より見やすいLuCIでの画面キャプチャを以下に載せておく。

Nexx WT3020FにOpenWrtをインストールした直後のスイッチにVLAN

Nexx WT3020FにOpenWrtをインストールした直後のスイッチにVLANが2つ用意されている

 

LANはVLANの1を含む

LANはVLANの1を含む

WANはVLANの2を含む

WANはVLANの2を含む

追記: その後人に手伝ってもらい無事回復させることができた


以下はNexx WT3020を購入した頃に書き着替えてた記事のドラフト。もう完成させることはないがそのまま載せておく。OpenWrtについては今回インストールした最新版についての話ではないのでそこは要注意。

[古記事]玄関やトイレにWifi電波が届くよう、ブリッジ接続でプラネックス製ちびファイMZK-RP150Nを設置 | あくまで暫定措置としてのブログ

プラネックス製ちびファイMZK-RP150Nのファーム置き換えたが多分それは失敗 | あくまで暫定措置としてのブログ

どうしようか迷った。うちは鉄筋コンクリート造りなのでwifi電波が思うように透過してくれない。これは変わらぬ事実。しかし、自分が使うスマホ(や父が使ってたスマホ)については、最近のものは2010年頃製のものと比較すると言うまでもなくいろんな面で進化している。その一つの改善点として、wifi電波の感度もよくなっている気がする。したがって、以前使っていたスマホならwifi接続が間違いなく切れていたような場所でも、今使っているものならかろうじて繋がり続けていることが多い。「ほとんど切れない」では不十分で、必ず常時繋がってもらわなければ困る監視用IPカメラ2台については、いろいろ工夫したが結局は有線で繋げておりもはやwifi電波が到達する・しないは問題ではない。

もちろん接続スピードが速いのに越したことはない。5GHzがサポートされていればよいし、11acがサポートされているのもよい。が、自分の経験上、後でつぶしがきくという意味ではUSBポートが用意されていることの方がずっと重要。

ところが、日本のこの手の製品にはUSB端子を持つものが見当たらない。

Nexx WT3020 [OpenWrt Wiki]

[Old] Running OpenWRT on TL-WR703N | あくまで暫定措置としてのブログ
TP-Link TL-WR703N [OpenWrt Wiki]よりスペックは上

ちなみに、いくつか亜種があるが、WT3020AだけUSBポートがなく(他はある)、フラッシュメモリも4MBしかない(他は8MB)のでこれだけ避ける必要がある。

USB 3GモデムをサポートするというWT3020Fを$15.97で注文。

オリジナルファームウェアでもtelnetできる

OpenWrtをインストールするなら既にバイナリが用意されているが、インストール後telnetできないというバグがあるとかないとか。もしインストールするならそれが解消されてからのほうが無難。”nWorld: WT3020HをOpenWrt化してみた。“によるとOnionWrt.linkにある2014年10月22日づけのバイナリでは問題がないようだ。”nWorld: WT3020のUSB速度低下問題

他のファームウェアNexx WT3020 U-boot mod? (Page 1) — Hardware Hacking — OpenWrt” オリジナルファームウェアも掲載

古いモデル【上海問屋】通販サイト | 【メール便配送(送料216円)対象商品です】 Wi-Fi 無線LAN ルーター : NAS機能搭載 11n/g/b 150Mbps対応 手のひらに収まるコンパクト設計 小型 wifi ルーター 上海問屋 DN-84749 [エコ] [メ02] 税込み1,999円 Wi-Fi 無線LAN ルーター 11n/g/b 300Mbps対応 コンパクト wifi ルーター 上海問屋 DN-11042 [エコ]の通信販売【上海問屋】 | 上海問屋 税込み2,199円

写真を見るとanonaboxもハードウェアはNexx WT3020を使っている模様。”nWorld: WT3020にTorを入れてanonabox化してみた。“で実際

192.168.8.1 ユーザネーム、パスワード共admin 最初からUI言語が英語になっていたのはよかった

パッケージリストがアップデートできない。リポジトリのURLが変更されてしまったからのようで、どうせならファームウェアをアップグレードすることに。https://downloads.openwrt.org/snapshots/trunk/ramips/mt7620/

 

root@OpenWrt:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                    4800      1268      3532  26% /
/dev/root                 2048      2048         0 100% /rom
tmpfs                    30676       460     30216   1% /tmp
/dev/mtdblock6            4800      1268      3532  26% /overlay
overlayfs:/overlay        4800      1268      3532  26% /
tmpfs                      512         0       512   0% /dev
root@OpenWrt:~# df -h

#17299 (mount as overlay storage for block-extroot does not work) – OpenWrt“にあるようにSDカードが/overlayにマウントされるようにしてもうまくいかない。おそらく、それ以前に/dev/mtdblock6がそこにマウントされてしまうからだろう。

#18795 (pivot_root / pivot_overlay not working on chaos calmer r44053) – OpenWrt“にあるように強制的に/etc/mtblock6のマウント・ポイントを変える方法もあるのだろうが、”Rootfs on External Storage (extroot) [OpenWrt Wiki]“にある

  • Another possibility to consider and try is to include in /etc/rc.local the commands: export PREINIT = 1;mount_root, as described in 14946 ticket, which in the case of running Chaos Calmer r44266 in the Comtrend AR-5387un, has been the only thing that allowed me to achieve extroot.

がこれもだめ。

Bridged AP [OpenWrt Wiki]

Dumb AP / Access Point Only [OpenWrt Wiki]

TL-WR1043ND: Convert WAN Port into 5th LAN port (Page 1) — Community Documentation — OpenWrt

Dumb AP / Access Point Only [OpenWrt Wiki]

Network configuration [OpenWrt Wiki]

IPカメラが壊れたかと思った

ACアダプタを取り替えた後無事動作を再開したIPカメラ

ACアダプタを取り替えた後無事動作を再開したIPカメラ

台所に設置してたIPカメラが突然動作しなくなった。動いたの3年くらいか?アラーム入出力端子つきのもので、ビデオ監視よりも、大阪ガスの煙・ガス不完全燃焼探知機ぴこぴこの同報機能で通知を受け取り、それを電子メールなどで自分や父に通知できることが主たる目的だった。父がまだ存命中に設置したもので、ゆくゆくは不用意な彼がコンロの火をつけっぱなしにしたりしたら、それを画像処理で検知できるようにしたいなどと思っていたが、それは企画倒れに終わった。彼が脳梗塞を起こしてここには住まなくなったので。

今ある知識では、その目的のためにアラーム入出力端子を持つIPカメラを利用するという手段がある、というのはほぼ自明なのだが、最終的にこれに到達するまでには何気に手間隙かかってる。LAN接続するのさえ、今は結局ここまでずるずるEthernetケーブル(UTPケーブル)を引っ張ってきて有線で接続しているので安定しているが、当初はwifiで接続しようとし、しかし鉄筋コンクリートづくりのこの家では思うようにwifi電波が通らず、それだけでも頭痛の種だった。そうやって苦労して曲がりなりにも1つの解に到達したら、もうそのことは忘れてしまいたい。なのにまた手をかけなければいけないのかと考えると正直気分が滅入った。

が、ふと、ひょっとしてイカれたのはIPカメラ本体ではなくてACアダプタの方では、と思い取り替えてみたら…動作した!しかし!「新しい」ACアダプタは実は、かつて一人暮らしのおばのみまもりが娘がしやすいようにと用意した他のIPカメラに付属していたものだった。しかも今回壊れたのと同型。

さらに、この「新しい」ACアダプタも、既に壊れたと思って代替品を用意したものだった。新たに単品で入手した新しいものではなく、置き換えられた、少なくとも当時は故障していると思っていたものだ。

なんともはや、そんな経緯があったので結果として「古い」ACアダプタの代替品が手元にあった。ただ、今は一応使えている「新しい」ACアダプタも、「古い」のとおそらく同型であるので同様にいずれ壊れてしまうかもしれない。なにしろ、既に一度は壊れたと判断したものだったのわけだし。

OpenWrt化済みバッファロー無線LANルーターWZR-HP-AG300Hのブリッジ運用法の改善

OpenWrt化済みバッファロー無線LANルーターWZR-HP-AG300Hブリッジとして運用し始めたものの、どうもすっきりしないところがあった。

OpenWrt Wikiの

Buffalo WZR-HP-AG300H [OpenWrt Wiki]” の “Network Port Assignments” の項に掲載されている内部構成図

基本以下のようにしていた。

  • eth0、eth1とWNICをブリッジ、
  • ポート0–4をVLAN #1として定義

ポート0は内部ポートでeth0とつながっているため、結局これら全部にまたがってブリッジが形成され、思うような挙動をしてくれたのだと思う。だが、ブリッジの設定でeth0ではなくVLAN #1であるeth0.1を直接指定することもできたので、そちらの方がeth0とするよりいいのか悪いのか疑問に思った。

多少は自分でも勉強し、以下の資料にもあった結果、それで問題ないのだろうと結論づけた。ただ、その方がパフォーマンス的に有利であるとか、不利であるとか、無関係である、とかいうことについてはわからない。

その結論に基づくLuCIによる設定画面が以下の通り:

‘lan”のブリッジに’eth0’ではなくVLANの’eth0.1’を加える

VLAN機能はオフにしてもデフォルトのVLAN #1はあるということがわかったので、VLANについては安心して以下のようにした(ただし、VLANはうかつにオフにしてはならないということを後で思い知ることになる)。

TagするならCPUのポートでは?

TagするならCPUのポートでは?

CPUのポート0についてはtaggedにする必要はないと思うんだが、つけても問題なかろうか、と。つけないほうがパフォーマンス的にはよいのかな?

とにもかくにも、以上の設定で得られた/etc/config/networkの内容は以下の通り。

root@OpenWrt:/etc/config# cat network

config interface 'loopback'
 option ifname 'lo'
 option proto 'static'
 option ipaddr '127.0.0.1'
 option netmask '255.0.0.0'

config globals 'globals'
 option ula_prefix 'fd3c:bbab:4f3b::/48'

config interface 'lan'
 option force_link '1'
 option type 'bridge'
 option proto 'static'
 option netmask '255.255.255.0'
 option ip6assign '60'
 option gateway '192.168.11.1'
 option broadcast '192.168.11.255'
 option dns '192.168.11.2'
 option _orig_ifname 'eth0 wlan0 wlan1'
 option _orig_bridge 'true'
 option ipaddr '192.168.11.11'
 option ifname 'eth0.1 eth1'

config switch
 option name 'switch0'
 option reset '1'
 option mirror_source_port '0'
 option mirror_monitor_port '0'

config switch_vlan
 option device 'switch0'
 option vlan '1'
 option vid '1'
 option ports '0t 1 2 3 4'

 

Just Some Personal Notes on VLANs

Just some personal notes on VLANs…

First, refreshing my memory on the basics…

  • Hubs & Repeaters” Hubs=repeaters. Operate at OSI Layer 1 (Physical Layer). “Switches create separate collision domains but not broadcast domains. Routers create separate broadcast and collision domains. Hubs are too simple to do either, can’t create separate collision or broadcast domain.”
  • Switches & Bridges” Operate at OSI Layer2 (Datalink Layer). Spanning-Tree Protocol (STP) for loop avoidance. Switches are hardware based while bridges are software based.
  • Routing

Virtual LAN – Wikipedia

VLANs operate at Layer 2 (the data link layer) of the OSI model. Administrators often configure a VLAN to map directly to an IP network, or subnet, which gives the appearance of involving Layer 3 (the network layer). In the context of VLANs, the term “trunk” denotes a network link carrying multiple VLANs, which are identified by labels (or “tags”) inserted into their packets. Such trunks must run between “tagged ports” of VLAN-aware devices, so they are often switch-to-switch or switch-to-router links rather than links to hosts. (Note that the term ‘trunk’ is also used for what Cisco calls “channels” : Link Aggregation or Port Trunking). A router (Layer 3 device) serves as the backbone for network traffic going across different VLANs.

A basic switch not configured for VLANs has VLAN functionality disabled or permanently enabled with a default VLAN that contains all ports on the device as members.[2] The default VLAN typically has an ID of 1. Every device connected to one of its ports can send packets to any of the others. Separating ports by VLAN groups separates their traffic very much like connecting each group using a distinct switch for each group.

It is only when the VLAN port group is to extend to another device that tagging is used. Since communications between ports on two different switches travel via the uplink ports of each switch involved, every VLAN containing such ports must also contain the uplink port of each switch involved, and these ports must be tagged.

The second paragraph answers the question I had earlier: why does my wifi router WZR-HP-AG300H has one VLAN even when I turn off its VLAN functionality?

It also touches upon the practical consideration while managing VLANs, which I learned the hard way… It’s critical to secure a way to access your router even when the changes you are going to have take effect do not have the intended consequences.

Management of the switch requires that the administrative functions be associated with one or more of the configured VLANs. If the default VLAN were deleted or renumbered without first moving the management connection to a different VLAN, it is possible for the administrator to be locked out of the switch configuration, normally requiring physical access to the switch to regain management by either a forced clearing of the device configuration (possibly to the factory default), or by connecting through a console port or similar means of direct management.

VLAN Basics – Thomas-Krenn-Wiki

InterVLAN Routing – Routing between VLAN Networks

今さら聞けない「VLANの基本」 (4) VLAN間ルーティング | マイナビニュース

Quick Charge 2.0/3.0に対応する巻取り式USB充電ケーブル…を買わなかった

ダイソーだかで買った巻取り式USBケーブルで9Vでの充電ができている

ダイソーだかで買った巻取り式USBケーブルで9Vでの充電ができている

現在のメイン端末Au版Galaxy S5 SCL23を入手してちょうど2年になる。使い始めた当初は起きている間中は電池がもってとても嬉しかったのだが、さすがに電池がヘタってきたのかそうはいかなくなり、就寝時以外にも1日のどこかで1度は充電が必要になった。Galaxy S5はQuick Charge 2.0に対応しているので、手っ取り早く充電できるようQuick Charge 3.0対応USB AC充電器を入手した。この後にも他のモデルを入手した。

充電ケーブルは原則デバイスに付属したものを使うべきなんだろうが、巻取り式のものの利便性は捨てがたい。どうせ安物ではQuick Charge 2.0/3.0に対応してないだろうから、と下線以下のリサーチを始めたところで、ふと、ところでダイソーだかで買った巻取り式USBケーブルはどうだろう、とUSB電流電圧テスターで計測してみると…おや、しっかり約9V/1.5A出てる…(写真)。

2A出力の急速充電対応をうたう充電ケーブル(ただしQuick Charge対応という意味ではない)で計測すると5Vしか出なかったりしたので、てっきり、Quick Charge 2.0での充電ができるためには充電ケーブルを選ぶ(これ自身は正しい)→特に線の細い百均の巻取り式ケーブルが使えるはずがない、と思い込んでいたが、誤りだったようで。USB電流電圧テスターが到着したときにいくつかのケーブルでテストしていたのだが、そのときも百均の巻取り式ケーブルは当然ダメだろうと思ってテストすらしなかったのでこんなことになった。愚かだ。

新たに注文する前に気づいただけ不幸中の幸い。


エレコム microUSBケーブル USB2.0 0.7m 2A出力 巻き取り 通信 充電対応 0.7m ホワイト ニンテンドークラシックミニ対応 MPA-AMBR2U07WHは、以下のレビューがあるのでOKのよう。1つだけなので心もとないが…。

オウルテック 急速充電専用ケーブル 1m巻取り ホワイト microUSB 2.4A出力対応 Galaxy/Xperia等スマートフォン タブレットPC対応 OWL-CBRJ(W)-SP/U2ATは以下のレビューがあるのでダメだろう。断線した、というレビューも多くいずれにせよ避けたろうとは思うが。

OpenWrt化済みバッファロー無線LANルーターWZR-HP-AG300Hをブリッジとして運用

バッファロー無線LANルーターWZR-HP-AG300H

バッファロー無線LANルーターWZR-HP-AG300H

OpenWrt化済みバッファロー無線LANルーターWZR-HP-AG300Hをブリッジとして運用する。オリジナルファームウェアでは筐体背面のスイッチでブリッジを選択すると、それだけでブリッジとして動作してくれた(はず)。OpenWrtでは同じステップで同じ効果は得られず、本来のWANポートはやはりWANポートとして動作するままだった。なので自分で設定しなければならない。そうだ、そういえばこの手間を省きたいがために最初はOpenWrtではなくバッファローの公式ファームウェアの元になっているDD-WRTを載せようと考えたのだったよ…

WANポートも実質LANポートとして動作して欲しい。それだけ有線で繋ぎたい機器があるからだ。 “自宅内LANの整理”プランのステップ6で「WZR-HP-AG300Hがブリッジとして動作するよう設定を施してから、それで1階のWG1200HSを置き換える」としているのもそれが理由。WZR-HP-AG300HがWANポート1+LANポート4で合計5ポートあるのに対して、WG1200HSはWANポート1+LANポート3で合計4ポートしかないからだ。その余分の1ポートはChromecast 2015を有線接続するのに使う可能性が現在高い。

さて、Buffalo WZR-HP-AG300H [OpenWrt Wiki]” の “Network Port Assignments” の項にある以下の構成図を念頭に考えていく。


資料として以下を参考にしたが、決してよくわかったとは言えない。

ブリッジを実現するためのOpenWrt上の設定(一部)

ブリッジを実現するためのOpenWrt上の設定(一部)

後でもう少し勉強してみた

結論としては以下のようにすればよさそうだ(以下全てOpenWrtのLuCI Web管理システム上での操作を前提):

  1. Network -> Wifiでwifiインターフェースを適切に設定し有効化。
  2. Network -> InterfacesでWAN, WAN6インターフェースは削除。
  3. 同じページでLANインターフェースの編集(”Edit”ボタン)。
    • “General Setup”タブでLAN側アドレスの設定や、必要ならばDHCPサーバーを無効化するなどする。
    • “Physical Settings”タブでブリッジ設定。LAN側インタフェースeth0やwifiインタフェースだけでなく、本来WAN側インタフェースeth1が含まれているようにする(図参照)。ここで、switchを実現してるだろうVLAN Interface: "eth0.1"も含めてもいいように思うのだが、そうしなくても思うような挙動をしている(今のところ)。
  4. Network -> Switch で “Enable VLAN functionality” のチェックを外す。これはおそらくしてもしなくても、あとで見るようにswitchのポートをまとめるVLANは生成されるようなので、実質無意味だろう(自信なし)。
  5. 必要ならファイアウォールの無効化。

これらの操作の後の /etc/config/networkを見てみると以下のような感じ。

config interface 'loopback'
 option ifname 'lo'
 option proto 'static'
 option ipaddr '127.0.0.1'
 option netmask '255.0.0.0'

config globals 'globals'
 option ula_prefix '省略'

config interface 'lan'
 option force_link '1'
 option type 'bridge'
 option proto 'static'
 option netmask '255.255.255.0'
 option ip6assign '60'
 option gateway '192.168.11.1'
 option broadcast '192.168.11.255'
 option dns '192.168.11.2'
 option _orig_ifname 'eth0 wlan0 wlan1' #その前の設定を保存している模様
 option _orig_bridge 'true' #その前の設定を保存している模様
 option ifname 'eth0 eth1'
 option ipaddr '192.168.11.11'

config switch
 option name 'switch0'
 option reset '1'
 option mirror_source_port '0'
 option mirror_monitor_port '0'

config switch_vlan
 option device 'switch0'
 option vlan '1'
 option ports '0 1 2 3 4'
 option vid '1'

VLANは無効化しているはずだが、しっかりswitch用のが用意されている。

この中のoption ifname 'eth0 eth1'が謎で、wifiインタフェースが含まれていないように見える。その前の値'eth0 wlan0 wlan1' の方が正しいように思えるのだが(eth1は含まれるべきだが)、以下の/etc/config/wirelessを見てみると、wifi-ifaceの設定の方にそれが反映されているようだ。

config wifi-device 'radio0'
 …

config wifi-iface
 option device 'radio0'
 option mode 'ap'
 option encryption 'psk-mixed'
 option key '省略'
 option ssid 'OpenWrt-bgn'
 option network 'lan'

…というわけで、OpenWrt化済みバッファロー無線LANルーターWZR-HP-AG300Hをブリッジとして動作させることができるようになったので、“自宅内LANの整理”のステップ7まで終了。残っているステップはあるが、計画の根幹部分は終了。ふう。

ところで、 “OpenWrt上でのDnsmasqの設定 ” に書いたように、自宅LAN内IP機器には、ホームゲートウェイGE-ONU PR-500MIとDnsmasqを動かしているサーバーを除き、全てDHCPでIPアドレスを払い出すつもりでいた。このようにすると、IPアドレス払い出し状況が一覧しやすいし、DHCPサーバーのdnsmasqがDNSサーバーも兼ねているため、hostname.lanというわかりやすいホスト名でこれら機器にアクセスできるから。ただ、これはネットワーク設定がうまくいっているときはよいのだが、何か問題があってルーターをLANから取り出してPCに繋いで個別に設定する際に問題になる。DHCPサーバーをPC側で走らせないといけないからだ。今自宅LAN内でブリッジとして動作させているルーターはWZR-HP-AG300HWG1200HSの2台。これらについては本体自身に固定でIPアドレスを設定することにした。

バッファロー無線LANルーターWZR-HP-AG300HのOpenWrt化

バッファロー無線LANルーターWZR-HP-AG300H

バッファロー無線LANルーターWZR-HP-AG300H

相変わらず “自宅内LANの整理” にある計画をチビチビ進めている。 “OpenWrt上でのDnsmasqの設定” では主にステップ3について述べた。そこにも書いたようにステップ4も完了しており、WZR-HP-AG300Hは現在LANからは外れている。順序は前後するが、この計画ではステップ10として、「WZR-HP-AG300Hには、余裕ができたときにDD-WRTを載せてもよいかもしれない」としており、そのために “バッファロー無線ルーターWZR-HP-AG300HのDD-WRT化 ” なんて記事も既に書いている。だが、やはり慣れたOpenWrtにした方がいいような気がしてきた。←後でちょっと後悔…。

WZR-HP-AG300HをOpenWrtで再利用 | fefcc.net“ではもとからインストールされているDD-WrtのWeb UIからOpenWrtのfactoryイメージをそのままインストールできるとしている。しかし、 Buffalo WZR-HP-AG300H [OpenWrt Wiki]” の “TFTP advice, wrong region” の項にはこうある:

There are apparently several regional versions of the OEM firmware. You may have to adjust the region in u-boot first. Below is example of a successful region change and flash procedure. Source: forum article

そしてシリアル・コンソールでのU-Bootの設定変更方法が掲載されている。また、日本語版の同ページではTFTPによるフラッシュのためにもU-Bootの設定変更が必要とし、実際の設定は Buffalo WZR-HP-G300NH [OpenWrt Wiki]” “Locked U-Boot, too short time TFTP window” の項 を参照するように、としている。

そこにも記載されているように、また、 “バッファローの無線LANルータWHR-HP-G300NのDD-WRT化” にも書いたように、以上の設定は面倒なシリアル接続を介してやるのではなく、デバッグ用アカウントでルータにログインして、デバッグ用コンソールで以下のコマンドで設定するほうがはるかに楽。

ubootenv set region US
ubootenv set accept_open_rt_fmt 1
ubootenv set tftp_wait 4
reboot

おそらく、実際には必要だとしても1行目だけだとは思うが、何かしくじってTFTPでファームウェアのインストールをしなくてはならなくなった際にそれが確実にできるよう、2, 3行目も行った。

デバッグ用アカウントでログインすると、ファームウェアのアップグレードのためのページも別に用意される(/cgi-bin/cgi?req=frm&frm=py-db/firmup.html)のだが、 “WZR-HP-AG300HをOpenWrtで再利用 | fefcc.net” ではそうではない一般用ファームウェアのアップグレードのためのページからファームウェアの書き換えができたという。だが、念には念を入れてそのデバッグアカウント専用ファームウェアのアップグレードのためのページから以下をフラッシュ。

https://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/openwrt-15.05.1-ar71xx-generic-wzr-hp-ag300h-squashfs-factory.bin

これで無事OpenWrt 15.05.1 Chaos Calmerのインストールが終了。次は、それをブリッジとして運用する

VNCクライアントが受け取った画像データをChromecastにキャストできないか

ふるさと納税を活用して入手したiiyamaブランドの液晶ディスプレイは、当初Asustor NAS AS3102Tを繋いでいたが、Chromecast (v2, あるいは2015)を購入してからは、そちらを繋いでいる。単なる液晶ディスプレイなので入力HDMIポートは1つしかない。なのでNASの画面をHDMIケーブルの抜き差しをしなくては液晶ディスプレイでは見られない(VNCサーバーは本体起動時に自動起動するようにしてあるので、他のPCなどからVNCビューワーでは見られる)。これでは不便なので、HDMIケーブルの抜き差し抜きでNASの画面見られるよう、それをChromecastにキャストできないかと考えた。

ところが実は液晶ディスプレイにはHDMIポート以外に、D-Subポート、DVI-Dポートがそれぞれ1つある。同時に有効にできるのはこれら2つのうち1つだけ、という制約があるが、HDMIポートとは同時に使えてディスプレイ下辺縁のボタンで切り替えができる。しかもたまたま、 “音声出力のないPC用ディスプレーをTVチューナと組み合わせTVセットとして使う” に書いたようなセットアップを友人宅で実現するために購入したが余ってしまったDVI-HDMI変換アダプタが手元にあった。ならば、NASのHDMIによる画面出力はこのDVI-HDMI変換アダプタを介して液晶ディスプレイのDVI-Dポートに繋いでしまえば解決する。DVI-Dに変換すると音声が落ちてしまうが、NASにはUSB DACも繋いであるので、音声の方はそちらに回すことにすれば全く問題がない。

…というわけで当初の問題は意外にあっさりと解決した。どうも最近、あとで考えると極めて自明なことになかなか気づかない気がする。ともかく、せっかくソフトウェアでの解決策をいろいろ考えたので記録だけしておく。

Stream2Chromecast: Chromecast media streamer for LinuxというPythonで書かれたユーティリティーがある。 “Stream Videos To Chromecast From The Command Line Using Stream2Chromecast ~ Web Upd8: Ubuntu / Linux blog” にも解説が。

基本ローカルファイルをキャストすることを前提に作られたものだと思うが、もしNASのXサーバー上に描画されたものをキャプチャしてファイルに吐き出すことができるのなら、パイプなり名前付きパイプなりを使えば、組み合わせで目的が達成できるはず。

ではどうやってキャプチャするか。 “Chromecastについて知っておきたいこと” にも書いたように最近のChromeブラウザにはキャスト機能が最初から組み込まれているのだが、AS3102Tにインストールされているものはそうではない。Chromium 47.0.2526.73 Ubuntu 14.04 (64-bit)とChrome 47.0.2526.106 (64-bit)と、Windows PC用最新版に比べて古く、キャスト機能がビルトインではない。それでもGoogle Cast拡張機能はインストールでき、タブ単位のキャストはできる。しかし現在のビルトインのキャスト機能でできるデスクトップ全体のキャストはできない。なので達成したい目的には使えない。そもそも、仮にデスクトップ全体のキャストができたとしてそれをどう自動起動できるかがわからない。

次に考えたのがffmpegを利用したキャプチャ。 “Capture/Desktop – FFmpeg” にあるx11grabデバイスを利用した方法はできそうになかった。 “FFmpeg Devices Documentation” を見ると、x11grab以外に使えそうなのがfbdevではないかと思うのだが、/dev/fb0なるデバイスは見つからないし多分ダメなんじゃないかと…(詳しい人教えてくだされ)。

ただ、NAS上にx11vncコマンドは存在し、それにVNCビューワーが接続して画面をリモートに見られるということは、その手段はともかく画面をキャプチャして送信することができている、ということ。なら、VNCクライアントでかつ受け取った画像データをキャストできるものはないかと調べると、Vnc2cast – Vnc to chromecast(トライアル版はvnc2cast free)なるAndroidアプリが見つかった。Google Code Archiveにはあまり有用なドキュメントがない。ピッタリのように思えたが、トライアル版で試してみると全くうまくいかない。Chromecastには接続できているようで、専用の画面表示を見せてくれるが、VNCサーバーから受け取った画面は表示してくれない。エラーも何も吐いてくれないので、VNCサーバーに接続できてるかどうかすらわからない。

vnc2flv – Desktop Screen Recorderなる日本人製のPythonによるユーティリティーが見つかった(ダウンロード)。試してないが、もしこれがちゃんと動くのなら、Stream2Chromecastと組み合わせれば目的は達成できるのでは。vnc2flvは画面表示をビデオとして記録するのが目的なのでFLVにエンコードするようだが、Stream2Chromecastに与える上でそれは必要ではない(むしろ害かも)ので、どちらもPythonで実装されていることだし、マージして不必要なエンコードやデコードが起こらない形でできるんじゃないか、と。

Chromecastについて知っておきたいこと

結局Chromecast (v2, あるいは2015)を購入した。知っておくとオトクな雑多な情報。

ジオブロッキングを回避するDNSサービス

結局Chromecast (v2, あるいは2015)を購入したのだが、それについて調べる過程で、Chromecastをジオブロッキングを回避するDNSサービスと組み合わせて使っている人たちがいるということを知った。以前はそういう用途にはVPNが定番だったと思うのだが、今はこちらの方が主流になっている模様。なぜ特定のDNSサーバーを使うことでそういうことが実現できるのかは自分にはわからない。

ともかく、関係フォーラムなどでよく取り上げられているサービスをまとめておく。

  • Unlocator – Unblock Streaming Services From Anywhere 料金表 $4.95/mo ~ $49.95/yr (≒$4.15/mo)。 VPN機能は込み。クレジットカード情報を与えることなく7日間無料体験可能。課金開始後14日間中にキャンセルした場合全額返金。
  • UnoTelly SmartDNS and VPN 料金表 DNS機能のみなら$4.95/mo~$47.95/yr (≒$4.00/mo)。 VPN機能込みの場合$7.95/mo~$59.95/yr (≒$5.00/mo)。課金開始後14日間中にキャンセルした場合全額返金。

Unlocatorは自身でかなり細かなセットアップガイドを用意しているが、以下は一般向けに書かれたもの: