3D 印表機要裝 Klipper,必須要多一個上位機,這個可以用各種不同相容的 pi 系統。先前買套件附的是 MKS PI,這次想找不同的更便宜的方案,試試看 Mellow-3D 出的 Fly pi。
先說一下使用後的想法,針對其包好的程序,說明詳細,提共各個板子的 Klipper 設定。但是,若想進一步了解板子的技術規格,幾乎找不到,甚至連板子外形和螺絲孔位的尺寸資料都沒有,對於想自己動手改的人來說,非常不便。
相對的來說,MKS 的文件算是比較有條理和完備,價格也不算太貴。另外,蜘蛛的板子價格較貴,但文件是一團混亂。
LCD 規格
文件很糟糕,相關的使用說明要到處收集,才能有一個全體的認識。在淘寶的購物網頁有比較詳細的說明。
解析度 480x320。
電容屏,板子上多一個晶片,選擇開關切換到 Cap,使用 16P 的 FPC 排線,只能接 V2 接口,而且要搭配 G2T 擴展板。螢幕使用 SPI 界面,觸控使用 I2C 界面。
電阻屏,選擇開關切換到 Resi,3 個接口都可以使用。使用 V1 接口,用 14P 的 FPC 排線。使用 V2 接口,要搭配 G2T 擴展板,用 16P 的 FPC 排線。板子上鈄線框框就是少掉的晶片。
FPC 排線,間距 0.5mm,長度 400mm。
從 fly 的 git 找到的接腳定義。
配套的 LCD 螢幕,LCD 的驅動是 ILI9488。觸控使用 XPT2046 ,是 TI 的 ADS7843 的相容 IC,可用 ADS7843 的驅動程式,但 mellow 使用 ads7846 的驅動。
驅動的設定可參考 FLY-TFT/rpi-overlays /fly-tft-v2.dts。
反編譯 overlay 的 dtb,整理連接的 IO,
--------------
Fly PI 40 pin <--> LCD 11 pin
Pin 23 - PH6 <--> SPI1 SCK & T_CLK
Pin 21 - PH8 <--> SPI1 SDO<MISO> & T_DO
Pin 19 - PH7 <--> SPI1 SDI<MOSI> & T_DIN
Pin 11 - PG7 <--> DC
Pin 12 - PG6 <--> RESET
Pin 8 - PA0 <--> LED
Pin 13 - PA13 <--> SPI1 CS
Pin __ - PA19 <--> Pin 9 T_CS
Pin 16 - PA1 <--> Pin 10 T_IRQ
Pin 1 - 3.3V
Pin 6 - GND
--------------開機及連線
Mellow 官方帳號 fly (或 root) /mellow,沒有網路時,可以使用 terminal 連線。
# minicom -b 115200 -D /dev/ttyUSB0
經過測試,不論是 MKS PI 或 Fly pi,或者說是執行 Armbian 的 pi,我找到便宜又能直接用的 wifi USB 卡是 Comfast 的 CF-WU810N,系統抓到使用的 driver 是 rtl8xxxu。
因為環境特殊,要用手動設定 IP,指令如下。
# sudo nmcli con add con-name "Samsung-A50-cc" \
type wifi ifname wlan0 \
ssid "Samsung-A50-cc" -- \
wifi-sec.key-mgmt wpa-psk \
wifi-sec.psk "wifi-password" \
ipv4.method manual \
ipv4.address 10.161.86.143/20 \
ipv4.dns 8.8.8.8,8.8.8.4 \
ipv4.gateway 10.161.80.1 \
connection.autoconnect yes
檢視 CPU 溫度。
$ cat /sys/class/thermal/thermal_zone0/temp
36490
$ cat /sys/class/thermal/thermal_zone1/temp
38991
大約 40度,相對於 MKS PI 大約在 70度,溫度真的很低。
編譯 Armbian image
參考
因為沒有 USB wifi 網卡的驅動,而這個網卡在 MKS pi 是可以用的。比較差異,發現 fly-3d 提供的 image 是版本比較舊的。因此,試試看自己編譯 armbian 的 image。
因為 armbian 中沒有 fly-3d 板子的設定,必須打上網友提供的 patch。
# 下載 patch 檔
$ git clone https://github.com/reemo3dp/mellowfly-geminipi-armbian
# Check out armbian's build repository
$ git clone https://github.com/armbian/build/ armbian
$ cd armbian/
# Apply patches from this repository
$ git am ../mellowfly-geminipi-armbian/patches/*.patch
# Compile ubuntu jammy with default kernel config
$ ./compile.sh BOARD=mellowflygeminipi BRANCH=current RELEASE=jammy BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=no INSTALL_HEADERS=yes
接下來就可以依據官方的文件,使用 compile.sh 建立 image 了。
其中,linux-complete.git.tar 超過 2.5GB,要下載很久,可以到目錄 armbian/cache/git-bundles/kernel/linux-complete.git.tar.oras.pull.tmp,看看下載的進度。不過,在 docker 下編譯失敗後,改在磁碟空間比較小的 VM 上編譯,則只會下載較小的 share 版本。
選擇 standard,image 約 2.4GB,改選 minimal,image 約 1.4GB。但是使用 minimal 的 image,要編譯 wifi 的 module,還要補裝好多東西,試了之後,還是改回 standard 吧。
經過幾次的測試後,比較好的版本是 https://github.com/lwfinger/rtl8188gu,可以順利的編譯完成安裝。
下載的 image,只能用 Win32DiskImager 來寫入 SD 卡,用 balenaEtcher 則會在驗證時失敗。但是自己建的 image,就可以用 Win32DiskImager 來寫入 SD 卡了。
無線網卡的安裝
無線網卡,是比較麻煩的部分,要找到 Linux 有支援的才行,這算是一種冒險吧。
在淘寶可以找到在 Windows 下免裝驅動程式的 USB 網卡,但有很多在 Linux 下很難裝起來。先前有失敗的例子,買來在 MKS PI 無法驅動。這次就找 MKS PI 附的同型網卡,COMFAST 的 CF-WU816N,結果還是不行,但還好後來解決了。
試了幾個,https://github.com/lwfinger/rtl8188gu 是比較新的,不用修改東西就能成功編譯安裝。在編譯時,可能會出現 "No rule to make target 'arch/aarch64/Makefile'" 的錯誤,要加上 ARCH 的選項,即 "make ARCH=arm64"。
$ git clone https://github.com/lwfinger/rtl8188gu
$ cd rtl8188gu
$ make ARCH=arm64
$ sudo make install
$ sudo depmod -a
$ sudo modprobe 8188gu
usb 網卡默認為 u盤模式。要用 usb_modeswitch 切換其模式。執行一次後,就可以保持此結果。
$ lsusb
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 114: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode)
# apt install usb-modeswitch
# usb_modeswitch -KW -v 0bda -p 1a2b
Take all parameters from the command line
* usb_modeswitch: handle USB devices with multiple modes
* Version 2.6.1 (C) Josua Dietze 2017
* Based on libusb1/libusbx
! PLEASE REPORT NEW CONFIGURATIONS !
DefaultVendor= 0x0bda
DefaultProduct= 0x1a2b
StandardEject=1
Look for default devices ...
found USB ID 1d6b:0001
found USB ID 1d6b:0002
found USB ID 1d6b:0001
found USB ID 0bda:b711
vendor ID matched
found USB ID 1d6b:0002
found USB ID 1d6b:0001
found USB ID 1d6b:0002
found USB ID 1d6b:0001
found USB ID 1d6b:0002
found USB ID 1d6b:0002
No devices in default mode found. Nothing to do. Bye!
~# lsusb
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 054: ID 0bda:b711 Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (After Modeswitch)
安裝好了之後,還要重裝 firmware。
[ 299.156391] usb 3-1: new high-speed USB device number 3 using ehci-platform
[ 299.313341] usb 3-1: New USB device found, idVendor=0bda, idProduct=b711, bcdDevice= 2.00
[ 299.313369] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 299.313381] usb 3-1: Product: 802.11n WLAN Adapter
[ 299.313391] usb 3-1: Manufacturer: Realtek
[ 299.313400] usb 3-1: SerialNumber: 00E04CB82101
[ 299.361219] usb 3-1: RTL8710BU rev A (SMIC) romver 1, 1T1R, TX queues 3, WiFi=1, BT=0, GPS=0, HI PA=0
[ 299.361255] usb 3-1: RTL8710BU MAC: e0:e1:a9:99:33:d9
[ 299.361268] usb 3-1: rtl8xxxu: Loading firmware rtlwifi/rtl8710bufw_SMIC.bin
[ 299.361359] usb 3-1: Direct firmware load for rtlwifi/rtl8710bufw_SMIC.bin failed with error -2
[ 299.361377] usb 3-1: request_firmware(rtlwifi/rtl8710bufw_SMIC.bin) failed
[ 299.361389] usb 3-1: Fatal - failed to load firmware
[ 299.361433] rtl8xxxu: probe of 3-1:1.0 failed with error -11
[ 299.361548] RTW:
usb_endpoint_descriptor(0):
[ 299.361556] RTW: bLength=7
..........
$ sudo apt install --reinstall linux-firmware
Recommended packages:
firmware-sof-signed
The following packages will be REMOVED:
armbian-firmware
The following NEW packages will be installed:
linux-firmware
0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
Need to get 266 MB of archives.
.......
[ 2055.140613] usb 3-1: USB disconnect, device number 4
[ 2055.419081] usb 3-1: new high-speed USB device number 5 using ehci-platform
[ 2055.575985] usb 3-1: New USB device found, idVendor=0bda, idProduct=b711, bcdDevice= 2.00
[ 2055.576015] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2055.576027] usb 3-1: Product: 802.11n WLAN Adapter
[ 2055.576036] usb 3-1: Manufacturer: Realtek
[ 2055.576045] usb 3-1: SerialNumber: 00E04CB82101
[ 2055.625487] usb 3-1: RTL8710BU rev A (SMIC) romver 1, 1T1R, TX queues 3, WiFi=1, BT=0, GPS=0, HI PA=0
[ 2055.625522] usb 3-1: RTL8710BU MAC: e0:e1:a9:99:33:d9
[ 2055.625535] usb 3-1: rtl8xxxu: Loading firmware rtlwifi/rtl8710bufw_SMIC.bin
[ 2055.625880] usb 3-1: Firmware revision 16.0 (signature 0x10b1)
[ 2057.333949] rtl8xxxu 3-1:1.0 wlxe0e1a99933d9: renamed from wlan0
對了,使用 minimal 的 image,也無法重裝 firmware,這是放棄的原因之一,反正 SD 卡的空間也很大。
要設定網卡,可安裝 network-manager,其將安裝 nmtui,即可使用 nmtui 來設定網卡,設定資料在重新開機後仍能保存。
安裝 Klipper
接下來只要參考 https://github.com/dw-0/kiauh 的說明,就可以很容易的安裝 Klipper。