bohemia日記

おうちハックとか画像処理、DeepLearningなど

スーファミ型のWifiルーターを作った

こんにちは。ぼへみあです。

去年購入したスーパーファミコンミニ、すごく手頃な大きさで、スーファミ世代には飾っても嬉しいデザインです。 この中にラズベリーパイを入れて使えたら楽しいなーと思っていたのですが、ちょうどいいケースが売っていたので 見た目はスーパーファミコンミニのWifiルーターを作りました。

まるでスーパーファミコンミニですが、中身はWifiルーターです。アクセスポイントとして機能し、Wifiに接続すればインターネットが使えます。 f:id:bohemian916:20190124214553j:plain

スーパーファミコンのケースについて

昨年、ニンテンドークラシック・スーパーファミコンミニが発売され、予約して速攻購入しました。 幼い頃に熱中し、見慣れたゲーム機が、片手で簡単に持てる大きさになり、とても愛着を持っていました。 しかし毎日ゲームをするわけではありません。この愛着のあるケースにラズパイを入れて使えたらいいなーと当時は思っていました。

ゲーム機に愛着を持っている人は多く、ニコニコでドリキャスを改造してPCにしてる人がいて、スゲーと思っていました。

しかしハードを分解して別の基盤を入れたり、USBやLANポートなどのインターフェイスの穴を開けたりするためには、かなり精密な設計と加工が必要であり、かなり大変そうと感じていました。 また、せっかく購入したスーファミミニを分解・加工したくない、とも思っており、手を出せずにいました。

その夢を諦めて1年、所用でパケットキャプチャリングをしたくなって、ラズパイでWifiルーターを作り始めました。 ラズパイは2台ほど持っていましたが、もう一台欲しくなってAmazonで漁っていると、スーファミミニなラズパイのケースを見つけました。

これは買うしかない!と思い、RaspberryPi 3B+と一緒に購入しました。

届いてみると、びっくりするほどスーファミミニの筐体と似ておりで、サイズも同じ、ぱっと見で区別できません。 左が本物のミニスーパーファミコン、右が購入したラズパイケースです。 f:id:bohemian916:20190124205334j:plain

f:id:bohemian916:20190124205411j:plain 中にはこのようにラズパイを格納できます。ラズパイに付いている4つのUSB端子のうち2個は、延長してスーファミ前面のコントローラー差込口に来ています。下の基盤にはラズパイのGPIOが接続されており、安全に電源が切れるようソフトウェアで制御できるようになっています。

f:id:bohemian916:20190124212621j:plain

電源のカチカチはもちろん、リセットボタンも使うことができます。 スーファミみたいに赤のLEDが付いたり消えたりします。 さらに、オリジナルのスーファミミニでは封印されていたカセット取り出しボタンが、こちらのケースでは変わっています。 カセット口が小物入れになっており、ボタンで「カシャコン!」という感じで開けることができるようになっていました。ラズパイのmicroSDカードを入れておくのにちょうど良いです。 f:id:bohemian916:20190124233827g:plain

ゲーム機などの筐体の意匠権は20年で失効しますので、元のスーパーファミコン筐体の意匠権は2010年に無くなっています。 なのでスーファミに似たようなハードを作っても良いのですが、このケースは一昨年2017年に発売したニンテンドークラシック ミニスーパーファミコンにそっくりなので、意匠権はどうなるんだろうな・・・と思いますが、せっかく買ったので使います。 ケースの出来は完璧ですので。

Wifiルーターにする

このケースとラズパイで、普段使えるWifiルーターを作ります。 ラズパイを使ってWifiを飛ばすというのはいろんな人がやっているので、参考記事はたくさんあります。 Wifiルーターにするためには以下のことをしてあげれば良さそうです。

  • DHCPサーバーを立てて、クライアントにIPを配ってあげる
  • イーサネット(eth0)から無線(wlan0)のIPマスカレードとフォワーディングを設定して、インターネットに繋げるようにする
  • wlan0から電波を飛ばし、アクセスポイントを作成する(hostapd)

以下が具体的な作業です。こちらの記事を主に参考にしました。 Raspberry Pi 3 Model B+の無線LANでルータを構成する - mekiku.com

  • 必要ソフトウェアをインストール&サービスをストップ
sudo apt-get install dnsmasq hostapd
sudo systemctl stop dnsmasq
sudo systemctl stop hostapd
  • DHCP設定ファイルを編集 /etc/dhcpcd.confに以下を追記
interface wlan0
static ip_address=192.168.10.1/24
  • DNSマクカレード設定をバックアップして編集
sudo mv /etc/dnsmasq.conf /etc/dsnmasq.conf.old
  • /etc/dnsmasq.confを作成、以下を書く
interface=wlan0
dhcp-range=192.168.10.2,192.168.10.40,255.255.255.0,24h
  • /etc/hostapd/hostapd.confを編集
interface=wlan0
driver=nl80211
ssid=raspi-wifi
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=MY-PASSWORD
  • /etc/default/hostapdを編集、設定ファイルを有効化
DAEMON_CONF="/etc/hostapd/hostapd.conf"
  • 無線LANと有線LANのポートフォワード
#net.ipv4.ip_forward=1 の行をアンコメント
  • ipマスカレード設定
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo sh -c “iptables-save > /etc/iptables.ipv4.nat
  • /etc/rc.localに次の一行を追加
iptables-restore < / etc/iptables.ipv4.nat

このWifiルーターはアクセスポイントとしては使えますが、PPPoE接続が必要な場合は、こちらの記事のように追加できそうです。

qiita.com

運用してみる

以上の設定をやって再起動すると、スマホやPCからWifiが飛んでいることが確認できます。繋げばインターネットもできます。

f:id:bohemian916:20190125003429p:plain

スーファミWifiルーターをテレビの前に並べて置いてみます。ゲーム機の方と間違えそうになります。 f:id:bohemian916:20190124215155j:plain

やっぱりこれがWifiルーターなのは不思議な気持ちになります。 レトロなものをレストアして現役バリバリで働いている喜びとはこういう感じなのか、と感慨に浸れます。 実際には(グレーな)ケースを買ってソフトウェア入れただけですが。もっと技術力を身につけて、自力で色々やれるようになりたいです。

おまけ
ガチ勢にもなると、全部品をCADで設計して、3Dプリンタで出力して全部作っちゃうみたいですね。 youtu.be