はじめに
最近は手乗りサイズの3Dプリンタが徐々に流行りつつあり,「イベントにプリンタを連れて行って出先で印刷したい」という需要も増えてきました.
しかし,イベント会場にWi-Fiアクセスポイントが設置されているとは限らず,これがない場合はklipperへの接続ができません.
そこで,3Dプリンタに搭載されているRaspberry Pi自身にアクセスポイントになってもらい,スマホやノートPCから直接接続する事を考えます.
この設定は普段使いしているルータ経由の接続とは共存がめんどくさい難しいため,別途Micro SDを用意して新しく環境を作り直すことを強く推奨します.
それでは!めざせ居酒屋ボートレース!!
環境
本稿で動作確認済みの環境は以下の通りです.
- Mainsail OS
- Raspberry Pi 3A+
- HDMI入力できるモニタ
- USBキーボード
手順
Mainsail OSのインストール
Mainsail公式ページの手順に従ってインストールします.僕は64bit版を選択しました.
Raspberry Pi Imagerのオプションで,家のWi-Fi設定を一緒に焼き込んでおくと便利です.
https://docs-os.mainsail.xyz/getting-started/raspberry-pi-os-based
OSインストールが終わったらモニタとキーボードを繋いで起動します.デフォルトのユーザはpi
,パスワードはraspberry
です.必要に応じて変更してお使いください.
ちなみに,自宅のWi-Fiへ接続していた設定を無効化の節の手順を行うまでは,自宅のWi-FiにつないであればSSH接続しての操作も可能なはずです.お好みで適宜ご利用ください.
必要なパッケージのインストール
OSインストール直後で何も更新を行っていない場合は,とりあえず最初から入っているパッケージたちを先に更新しましょう.再起動も忘れずに.
sudo apt update
sudo apt upgrade
sudo reboot
再起動から帰ってきたらアクセスポイント化に必要なパッケージたちをインストールします.
sudo apt install hostapd
sudo apt install dnsmasq
hostapd
は無線LANデバイスをアクセスポイントとして動作させるためのソフトウェア,dnsmasq
はDNSサーバとDHCPサーバの機能を含んだソフトウェアです.
このあと設定ファイルを編集します.お好みのエディタがあればこのタイミングでインストールしておきましょう.
良く分からないという方はデフォルトで入っているnano
を使うのがおすすめです.本稿でもnanoを想定してコマンドを挙げておくので,他のエディタをお使いの方は適宜読み替えてください.
DHCPサーバの設定
/etc/dnsmasq.conf
を編集します.
sudo nano /etc/dnsmasq.conf
ファイル末尾まで下キーでスクロールしたら,以下の内容を追記します.
interface=wlan0
dhcp-range=192.168.200.10,192.168.200.100,255.255.255.0,12h
この設定では,wlan0
(=無線のインターフェース)に対して接続してきたデバイスへ,192.168.200.10 ~ 192.168.200.100
の中からIPアドレスを割り当てています.
追記できたら,ctrl + o
でWrite outを呼び出してEnterキーを押下して保存してから,ctrl + x
でnanoを終了します.
Raspberry PiのIPアドレスを固定
ノートPC等からRPiにつなぐ際に,IPアドレスが固定されていた方が何かと便利なので設定しておきます.
例によってnanoで設定ファイルを開きます.
sudo nanot /etc/dhcpcd.conf
下キーでファイル末尾までスクロールして,以下の内容を追記しましょう.
interface wlan0
static ip_address=192.168.200.1/24
この設定では,RPiのIPアドレスが192.168.200.1
に固定されます.
hostapdの設定
RPiのアクセスポイントとしての設定を行います.
以下のコマンドで設定ファイルを作成しながら開いて,
sudo nano /etc/hostapd/hostapd.conf
以下の内容を書き込みます.このとき,ssid=klipper_direct
でSSID(PC等のWi-Fi接続先一覧に出てくる名前)をklipper_direct
に,wpa_passphrase=pass_klipper_direct
でWi-Fi接続時のパスワードをpass_klipper_direct
に設定しています.必要に応じて変更してお使いください.
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=wlan0
driver=nl80211
ssid=klipper_direct
hw_mode=g
country_code=JP
channel=11
ieee80211d=1
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_passphrase=pass_klipper_direct
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
設定ファイルを書けたら,アクセスポイントとしての機能が自動起動するようにしておきます.
sudo systemctl unmask hostapd.service
sudo systemctl enable hostapd.service
自宅のWi-Fiへ接続していた設定を無効化
ここまではRaspberry Pi Imagerで一緒に焼き込んだWi-Fi設定が生きていましたが,これが有効になっているとRPi自身をアクセスポイントとする設定と競合するため無効化します.
もう一度以下のコマンドで設定ファイルを開いて,
sudo nanot /etc/dhcpcd.conf
これを末尾に追記します.
nohook wpa_supplicant
本稿の手順通りに進んでいれば,ファイル末尾は
interface wlan0
static ip_address=192.168.200.1/24
nohook wpa_supplicant
となっているはずです.
ここまで設定できたら,一旦再起動です.
sudo reboot
これ以降はRPiが自宅のネットワークへ自動接続されないため,メンテにはモニタとキーボードが実質必須(シリアル接続もできるらしいですが本稿では扱いません)となります.
起動確認
再起動から帰ってきたらRPiがアクセスポイントになっているはずです.
PCやスマホのWi-Fi接続先一覧からklipper_direct
を探して
Wi-Fiパスワード(本稿デフォルトならpass_klipper_direct
)を入力して接続します.(インターネットへは繋がっていないので,アイコンは見慣れた接続済みアイコンと違うかもしれません)
お好みのブラウザからRPiに割り当てた固定IP(本稿デフォルトではhttp://192.168.200.1/
)へ接続すれば...
はい!いつもの見慣れたMainsailの画面に辿り着けました!
klipperの設定ファイルを移植
必要に応じて,普段お使いのklipper環境からpringer.cfg
を持ってきて配置してください.
- 事前に普段のお使いのRPiからPCへダウンロード
- 本稿で作った環境へ繋いだらアップロード
の流れが無難かと思います.
おわりに
いかがでしたか?この手順でスタンドアロン用MicroSDを作っておくとイベント時にも安心ですね.printer.cfg
の共有だけちょっと面倒なので良い運用があれば教えてください.
それでは.
参考
Raspberry PiをWiFiアクセスポイント化してスタンドアロン運用
RaspberrypiをWifiアクセスポイントにする。(スタンドアローン)