Dropbox

家のパソコンがMacだけの時はMacAir Expressにプリンターを接続して簡単にリモートプリント出来ていました。最近になり家の据え置きPCをIntel NUCにしてWindows 10を使い始めました。これもBonjurでプリンター自体は簡単に見つかりますが、何故か印刷できずにいました。それに加えてMacAir Expressを別の場所に移動してネットワーク拡張のために利用することになったので、余っていたRaspberry Pi Zero Wをプリンターサーバーにした。

すべてはネット上にあふれている設定事例に従えば良いのですが、HPのプリンター設定の正解を見つけるまでに時間がかかったので、例によって覚え書きとして大まかな手順を書き残しておきます。

sudo apt-get update
sudo apt-get install cups
sudo apt-get install hplip

以上でソフトウエア導入は完了する。最初はcupsのみを導入しました。沢山のプリンターがすでに登録されているもののHP LaserJet P1007は含まれていない。HPのプリンター設定について探すとHPのサイトからパッケージをダウンロードしてスクリプトを実行しろという情報が沢山見つかる。ところがmakeが通らない。しかも、最後には必ずネットワーク接続が切れてしまいデバックしにくい現象に陥る。解決策を探しているうちにコンパイル済みのものがapt-getで導入出来ることが分かりました。それがhplipパッケージです。

ここからは今ひとつ確定的な手順が分かっていないのだが、、、

cupsのwebインターフェースを使ってプリンターの設定を行うとドライバーの説明にpluginが必要とか書かれている。構わず印刷してみるとジョブ画面でfilterが何とか言うメッセージが出ていて印刷出来ない。

hp-pluginというコマンドがあるので、実行すると何をしているのか分からないがメッセージも何もないまま終了する。これでも印刷は出来ない。そのうちネット上で何やら「おまじない」みたいなものを発見する。騙されたとつもりで、プリンターのUSBケーブルを外す、Raspberry Piの再起動、USBケーブルの再接続、Raspberry Piの再起動。何故か、これで印刷出来るようになりました。

PC側の設定ですが、macOSからはBonjourが使えるので何も悩むことはありませんでした。問題はやはりWindows 10ですが、やり方が分かってしまえば難しくはありません。
– cupsのでプリンターの管理画面を開きURLを記録する
– Windows 10の管理画面から「プリンターまたはスキャナーの追加をします」をクリック
– しばらくすると現れる「プリンターが一覧にない場合」をクリック
– 共有プリンターを名前で選択するに先のURLを入力(https:で始まる場合はhttp:に変更し、次へをクリック
– 適切なドライバーを選択
以上です。

Raspberry Pi Zero W用に準備したLCDディスプレイは7インチ、解像度800×480、HDMI接続、タッチパネル付きです。とりあえずRaspberry Pi Zero WにHDMIで接続すれば画面を表示することが出来ます。ただしVGA(640×480)モードで立ち上がっています。PIXELを立ち上げてみれば一目瞭然ですが、コマンドラインにおいても640×480のエリアしか使用していません。topや vimを立ち上げると右端を使用していないのがよく分かります。この状態でtput colsは80、tput linesは30を返します。

解像度やHDMIのモードは/boot/config.txtで調整します。ところがHDMIモードの一覧に800×480という組み合わせがありません。640×480で使用することも考えましたが、せっかくのタッチパネルに問題があります。タッチパネル自体は画面全体が反応しています。そのため横方向が一致しません。物理的な画面の一番右端をタッチすると640ドット辺りが反応してしまいます。

色々と調べているとRasberry PiのサイトにHOWTO:Create Custom HDMI modesという記事があるのを発見しました。これに従い、私の場合/boot/config.txtに以下の行を書き込むことにより800×480がフルに使用できるようになりました。
hdmi_cvt=800 480 60 1 0 0 0
hdmi_group=2
hdmi_mode=87

PIXELも完璧ですし、コマンドラインを使用する場合においても画面をフルに使用できるようになりました。コマンドラインではtput colsが100を返すようにになりました。

タイトル的にはちょっと大げさですが、やっていることは単純です。Raspberry Pi Zero W用に小型のLCDディスプレー、キーボード、USBハブなどを準備して接続しただけです。

準備したハードウェアを紹介します。全て中国の通販サイトtaobao.comで入手したものです。

[ LCDディスプレー ]
193元(日本円約3000円)、7インチ、解像度800×480、HDMI接続、タッチパネル付き、USB給電。本体は220gほど、ケースを付けると370gと結構重い。

[ USBキーボード、カバー付き ]
49.8元(日本円約790円)、キーボード部分の幅203mm、USB接続。OTGケーブルが付属していてAndroid携帯電話に接続出来るようになっています。またケースのフタ部分には吸盤が付いていて携帯電話を固定出来るようになっています。キーストロークがあって、押した感じも悪くはありません。ところが実際に使ってみるとタイプしにくい。しっかりと深く押さないとキー入力されないので、時々キーミスしてしまいます。

[ 給電機能付きUSBハブ ]
28元(日本円約444円)、OTG USBハブ、給電機能付き。Raspberry Pi Zero WのマイクロUSBコネクターに直接接続できます。ハブに給電してRaspberry Piも駆動できます。ハブに接続するデバイスによってはRaspberry Piにも直接給電の必要があるでしょう。

[ 4Gモデム ]
随分前に買ったHuaweiのUSB LTEモデム。以前、Raspberry Piでテストだけしたもの。

[ モバイルバッテリー ]
手持ちの適当なもの。これはMINISOで買ったもの100元以下だったと思う。

それぞれの筐体をバラバラにして専用のケースを作ればUMPCらしくなるでしょうが、パワーマネジメントも無いですし、そこまではやらないと思います。

HuaweiE3276
Raspberry Piから携帯電話のデータ通信に接続するべくUSBタイプのモデムHuawei E3276を購入しました。E3276を選んだのは実績があり手頃な値段で入手出来るからです。

到着した物はTモバイルのロゴが入ったものでした。初代Raspberry PiはUSBコネクターからの電力供給に不安があるので最初からバスパワーを供給したUSBハブを使用して接続しました。

ここで特別な手順を紹介するわけではありません。ただ、色々なツールやスクリプトが散在していて一番簡単に接続できたスクリプトにたどり着くのに少々時間がかかったのでメモ程度に記録しておくためです。

とりあえず接続してlsusbコマンドで存在が確認出来れば一安心です。

ID 12d1:1f01 Huawei Technologies Co., Ltd.

おそらくは、こんな感じで表示されます。この12d1:1f01はドライバーを導入するためのメディアモードとして認識されていることを示します。これをモデムモードにスイッチして適当なATコマンド(パソコン通信時代の方々にはお馴染みのモデムを制御する文字列)を投げかければデータ通信が出来るようになるはずです。さほど大げさなことでは無いのですが、ちゃんとした方法がなかなか見つかりませんでした。

最終的にはGitHubで見つけたhuawei-connectというPythonスクリプトを使用したら一発で接続できました。Readme.mdに書かれている通り、必要なツールやモジュールをapt-getで導入してhuawei-connectスクリプトにAPNを指定して実行するだけでデータ通信が出来るようになります。

lsusbで確認するとhuawei-connectがusb-modeswitchを呼んで以下のように変わっていることが確認できます。

ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcar

ifconfigでwwan0にIP addressが割り当てられていることが確認出来れば成功です。もしエラーする場合はdebugオプションを付けて実行します。debugオプションでは詳細なメッセージをstderrに出力するのでスクリプトが何を行っているのかを確認するのにも有効です。

ほぼ自分用のメモです。

WiFiがオンボードに載っているBanana Proを購入したのはアクセスポイントととして構成するためでした。これはBanana Proをアクセスポイントとして使用するための設定に関する覚書です。 (本当は+αな用途があるのですが、そちらはまたの機会にします)

導入からWiFiが使用できるまでの設定については以前の記事を御覧ください。

アクセスポイントとして使用するための基本的な事柄はBanan Proのwikiに書かれています。ほぼ、その通りですが一部の設定を変更しなければ接続できませんでした。

必要な設定は以下の通りです。

– /etc/modulesの変更 (wikiの通りです)、
ap6210 op_mode=2 を追加あるいは編集

– hostapdの導入、wikiの通りgitで導入しました。導入したのはhostapd v2.5-develでした。

– hostapd.confの内容はwikiに書かれているものではうまく接続できませんでした。以下のような内容にしました。

interface=wlan0
ssid=SSIDSSID
channel=6
hw_mode=g
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=PASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

– /etc/network/interfaceもwikiのものとは少し変えました。

auto wlan0
iface wlan0 inet static
address 192.168.10.1
netmask 255.255.255.0

– udhcpdの導入と設定は、ほぼwikiのままです。設定ファイルは次のような感じです。

start 192.168.10.20
end 192.168.10.254
interface wlan0
opt dns 8.8.4.4 8.8.8.8
option subnet 255.255.255.0
opt router 192.168.10.1
opt wins 192.168.10.1
option dns 192.168.10.1
option domain local
option lease 864000

– 自動起動とnatの設定のために/etc/rc.localに以下のコマンドを挿入しました。

udhcpd /etc/udhcpd.conf
echo none > /sys/class/leds/green\:ph24\:led1/trigger
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE
/usr/local/bin/hostapd -B /etc/hostapd/hostapd.conf

echoから始まる行は緑のLEDの点滅を停止するためのものです。

DC5V 2Aしかボードには供給されていないので常時稼働も安心な気がします。少なくとも大きなバッテリーが載った使いふるしのノートパソコンを常時稼働させるよりは安全なのではないかと思います。ファンレスですし、夏場に安定稼働出来るかどうかは不明です。

BananaRasp
Raspberry Piに似たというか互換性のあるBanana Piというワンボードコンピューターがあります。Raspberry Piも後継機が出ましたが、へそ曲がりな私は互換機のBanana Proというのを試すことにしました。プロセッサーの能力とかにはあまり関心は無くてWiFiがオンボードで載っていることが決めてでした。

上の写真はRaspberry PiとBanana Proを並べたところです。下のBanana Proに刺さっているリード線はUSB TTLのケーブルでシリアル接続でコンソールを動作させています。

購入したのはケースと各種ケーブルがセットになったもので、Banana Pro本体, ケース、CPU用のヒートシンク、TTL to USBケーブル、専用SATAケーブル、電源(5V 2A)がセットになったものです。

OSの導入はRaspberry Piとまったく同じでSDカード、Bananaの場合はMicro SDカードにOSのイメージを書き込めばOKです。OSはLinuxも各種、加えてAndroidも用意されています。

わたしが選んだのはRaspberry PiのRaspbianに相当するBananian Linuxです。Xも必要ないですしシンプルさが良いです。これのversion 15.01を使用しました。Macでのイメージの書き込みはRaspberry pi用のRPi-sd card bulder b1.2を使用しました。

HDMI接続のディスプレイとUSBキーボードを使用するのが一般的ですが、せっかくUSB TTL変換ケーブルが付いているのでMac OS Xのconsoleコマンドでシリアルポートからログインして設定を行いました。詳細は省きますがPL2303のMac OS X用のドライバーを導入し、Termnialから”screen /dev/tty.usbserial 115200″というコマンドを投入するだけで接続出来ました。

とりあえずの目標はWiFiの接続です。当然のことながらEthernetポートは接続すれば、そのまま使用できます。Ethernetは使用せずにWiFiを設定しネットワーク接続まで行ってみました。

Bananianの入ったMicro SDカードを挿入して電源を接続します。何やらLEDがチカチカとするのでブートしているようすです。コンソールを起ち上げておけばブートの様子も見ることが出来ました。

まずはrootでログインします。パスワードはRaspbian同様”pi”です。

一番、最初に実行するコマンドはbananian-configです。この中で、rootバスワードの設定、ハードウェアの変更、パティションの拡大等を行います。この中のハードウェアの変更が重要で、これを行わなかったためにWiFiのハードウェアが認識されずにしばらく悩んでしまいました。

Bananianの構成上、ハードウェアはデフォルトではBanana Piとなっています。これをBanana ProにしないとWiFiチップが動きません。そのためmidprobe ap6210がエラーで終了してしまいます。ハードウェアの変更はbananian-hardwareでも行えます。

bananian-configが終了したら一度rebootを行います。

次にmodprobe ap6210とlsmodでWiFiチップが認識されることを確認します。問題なければ/etc/modulesにap6210を追加しておきます。

後は/etc/network/interfacesに以下の定義を書き込めば終了です。このあたりはBanana Proのフォーラムを参考にしました。

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid “WLAN-NAME”
wpa-psk “WLAN-KEY”

rebootすればWiFi接続が出来ているものと思います。WiFiアンテナを接続するのを忘れずに。

BananaHDD

使用する予定はありませんが、キットにはSATA 2.5インチHDDをマウントするケースとケーブルが付属しています。ちょっと試しに接続してみましたが動作確認までは行っていません。ケースの上に出ている黒いものはWiFiのアンテナです。

パブリックな無線LANを使用している時にちょっとだけセキュアな接続が欲しい。あるいは、私のように特殊な環境下で制限の無いインターネット接続がしたい場合VPNを使用します。世間には、そういった目的のための格安なVPNサービスが沢山あります。一般的にはそれらを契約しておけば事足ります。この辺りの事情は小龍茶館が詳しいので、そちらを御覧ください。各種サービスの割引も受けられます。

私も有料サービスを利用する一方で自分で借りているVPS上に予備あるいは環境によって使い分けるためにVPNを設定して使用しています。設定事例はインターネット上で沢山見つかります。それらを組み合わせて、うまく行った事例を紹介いしたます。

– L2TP/IPSecを使用する(iOSで簡単に使用できるため)
– IPSecにはipsec-toolsを使用する。(最初Openswanを使用したらAndroidとiOSで問題が発生した。iOSは設定で回避出来たようではある)
– VPS上のOSはCentOS 6.4 x86_64を使用
– IPv4のみに対応

設定はインターネット上で見つかったものを組み合わせただけです。参考にしたURLを示し、私の変更点を書いておきます。

  1. L2TP/IPSecの設定は以下のページを忠実に実行します。
    L2TP/IPSec VPN Setup on Centos 6 (64-bit) for use with Android ICS and iOS 5 Clients
    変更するのはIP AddressとPSK,ユーザー関連の設定だけです。
    – /etc/racoon/psk.txt は全く任意なものを設定します。
    – /etc/xl2tpd/xl2tpd.confのlocal ipとip rangeは端末とサーバーがPPP接続された時に使用されるIP Addressです。端末で他のローカルIP Addressと重ならない方が良いと思います。
    – /etc/ppp/options.xl2tpdのDNSはサーバーに割り当てられたものあるいは8.8.8.8を指定します。
  2. ファイヤーウォールとNATの設定は以下のページを参考にしました。
    CentOS 6でとにかくL2TP/IPsecサーバ
    これの /etc/sysconfig/iptables の設定例をまるまる利用しました。変更箇所は-A POSTRUTINGで指定するIP Addressをl2tpd.confのip rangeに合わせるだけです。

以上でMac OS X, iOSデバイス,AndroidデバイスからVPN接続可能になりました。

 

 

Compaq Presario CQ45が余ったので何かのテスト用にとUbuntu 13.04デスクトップ版を入れてみました。搭載されている無線LANチップ Broadcom BCM4312を動かすための覚え書きです。

主な手順はBroadcom BCM4312 on Ubuntu 13.04に書かれていますが、いくらか足りない部分を補いつつ実際に投入したコマンドをまとめておきます。

Ethernetにてネットワーク接続をしておく

Terminalより、
– sudo apt-get update
– sudo apt-get upgrade
– sudo apt-get install firmware-b43-lpphy-installer
– sudo vi /etc/rc.local
exit 0の前に以下の2行を追加(しなくても良いかも)

sleep 5
iwconfig wlan0 txpower 12dBm

Shutdown/reboot

System Settings/Software & Updates/Additional Drivers/Broadcom Corporation BCM4312 802.11b/g LP-PHYのSTA driverを有効にする。

これでネットワークのステータスからアクセスポイントが見えるようになるので選択してパスワードを入れれば接続されます。