液晶パネル付きRepetier-Server機を構築する

USB接続タイプの3Dプリンタ向けのプリンタサーバとして[Repetier-Server](https://www.repetier-server.com/)というものがあります．
これをインストールしたラズパイに3Dプリンタを繋いでおけばネットワーク越しに3Dプリントすることができるのでとても便利です．

これまではラズパイ2にRepetier-Serverをインストールしていた…というかRepetier-Serverが公式に配っているラズパイイメージをインストールしてそのまま使っていたのですが，たまたまAliexpressでケースと[タッチパネル付き液晶](https://www.aliexpress.com/item/Latest-Raspberry-Pi-3-Model-B-3-5-inch-Touchscreen-480-320-TFT-LCD-ABS-Case/32905169780.html?spm=a2g0s.9042311.0.0.13dd4c4djqKoKC)が激安で出ているのを見つけたので，せっかくだからそれを使ってRepetier-ServerのGUI機能を使いたい!!と思ったのがスタートです．

んで，細々と面倒だったのでメモです．

## ライセンス

なんか気がついたらLCDインターフェースを使うためにはライセンス購入が必要になったっぽいです。まじか…
https://forum.repetier.com/discussion/comment/27776/#Comment_27776

## 背景

最初はRepetierが公式で配っているSDイメージをそのまま使おうと思ったのですが，液晶のドライバがうまく入らなかったので，raspberryPI公式のイメージにRepetier-Serverを入れる方針をとりました．

## 環境

- Raspberry PI 3B
- Raspbian Stretch with desktop
    - Version: April 2019
- Repetier-Server
    - armhf 0.91.2
- ↑の液晶

## 手順

1. SDにRaspbianの公式イメージを焼く
1. ネットワークの設定をする
1. 液晶のドライバをインストールする
1. Repetier-Serverをインストールする
1. Repetier-Serverを自動起動する設定を書く
1. Repetier-Serverにコマンドを追加する

という感じです．

# インストールする

## Raspbianのインストール

普通にインストールして，sshを有効にして固定IPになるように設定しておくと後が楽です．

## 液晶のドライバをインストールする

お店の案内にしたがって，githubからドライバをインストールスクリプトを手に入れて実行します．

```bash
cd 適当なディレクトリ
git clone https://github.com/goodtft/LCD-show.git
cd LCD-show
chmod +x LCD35-show
sudo ./LCD35-show
```

最後のコマンドを実行すると，必要なドライバ類がインストールされ，設定を書き込んでくれるようです．勝手に再起動までするので，何か別の作業をしながらは実行しないように注意．

LCD35というのは今回買った液晶が3.5インチのもので，それに合わせて実行スクリプトを変える必要があります．

これで再起動がかかれば液晶にブートメッセージから表示されるはずです．

## Repetier-Serverをインストールする

[公式サイトのダウンロードページ](https://www.repetier-server.com/download-repetier-server/)からdebファイルをダウンロードして実行するだけです．

```
cd 適当なディレクトリ
wget http://download.repetier.com/files/server/debian-armhf/Repetier-Server-0.91.2-Linux.deb
sudo dpkg -i Repetier-Server-0.91.2-Linux.deb
```

0.91.2の部分は最新のバージョンに合わせてください．

## Repetier-Serverを自動起動する設定を書く

[公式サイトに解説](https://www.repetier-server.com/booting-into-touchscreen-mode-for-linux/)があるのですが，ちょっと古いせいで今のLXDEの構成と異なっていたので，次の手順を取りました．

### パスワード無しでログイン出来るようにする

これは解説と同じで，rasppi-configから実行します．

### 自動起動設定を書く

GUIが起動できてないと行けないのでraspbianのデスクトップ環境であるLXDEから起動するようにします．
基本的には[LXDEの解説](https://wiki.lxde.org/en/Autostart)を参考にRepeteier-Serverの設定を組み込みましました．

下記の内容を ```repetier-server.desktop``` として， ```~/.config/autostart/``` 以下に保存します．

```
[Desktop Entry]
Name=Repetier-Server
Type=Application
Path=/usr/bin/
Exec=chromium-browser --noerrdialogs --disable-suggestions-service --disable-translate --disable-save-password-bubble --disable-session-crashed-bubble --disable-infobars --touch-events=enabled --disable-gesture-typing --kiosk --force-device-scale-factor=0.5 http://127.0.0.1:3344/modules/front2/www/app.html
Icon=chromium-browser
Terminal=false
```

```.desktop``` ファイルはデスクトップ環境の設定ファイルで，このファイルをautostart以下ではなく，デスクトップに直接保存するとショートカットとして現れ，ダブルクリックすれば実行できます．
なにか設定を書いてテストしたいときは，まずデスクトップで編集してダブルクリックでちゃんと起動するか確認してからautostart以下にコピーすると楽です．

この設定ファイルを保存すれば次回以降の起動時に勝手にRepetier-ServerのGUIが起動するようになります．
ただ，Repetier-Serverの公式の解説とは違い，個人的にタッチパネルでもマウスカーソルの表示は残したかったので，マウスカーソルを消す設定はしていません．

今回の液晶は解像度が低すぎていろいろ表示があふれるので，上記の設定例では起動時にズームを50%にしています(--force-device-scale-factor の部分)．
100%でGUIを初回に起動させると，ライセンスの確認メッセージがでるのですが，小さい液晶だとはみ出してしまって肝心のクリックするボタンが見えません．
その場合はキーボードを繋いで， ```Ctrl+-``` キーを繰り返し押してGUIの表示サイズを小さくして，全体が見渡せるようにするとそのへんの操作が出来るようになります．
ちなみに，上記の設定でGUIを起動すると，F11でフルサイズの解除をすることができないので，Alt+F4でウィンドウを閉じました．

## Repetier-Serverにコマンドを追加する

こうやってインストールしたものと，インストール済みSDイメージのものではRepetier-ServerのGUIのメニューに違いがありました．
具体的には，インストール済みSDイメージのものには再起動とシャットダウンの項目があるのですが，自分でインストールした場合にはありませんでした．
ラズパイには電源スイッチがないので，遠隔もしくはタッチパネルからシャットダウンしたいのですが，その項目がなくなっているのは残念です．

調べてみると，Repetier-Serverには自分でコマンドを追加できるようで，その設定方法も書かれていたのでそのとおり設定をしました．

解説は[公式ドキュメント](https://www.repetier-server.com/manuals/0.91/index.html)の ```Advanced Setup ``` の項目にあります．

# おまけ

以上でRepetier-Server本体のインストールは終わりなので，あとは3Dプリンタを繋いで設定するだけです．

ちなみに，```Serial communication errors: checksum and line number not +1``` というエラーが発生してプリントが途中で止まってしまうことがある場合，プリンタのバッファ設定を修正すると治る可能性があります．
バッファのデフォルトが127になっているのですが，63にしたら問題なくなったことがあります．