參考 requireJs中使用Vue3及Vue3框架(viewUIPlus、elementPlus)。
阿吉的部落格
2025年2月26日 星期三
2025年2月21日 星期五
LCD debug
9341 正常的訊息
使用 lsmod
https://mjmwired.net/kernel/Documentation/devicetree/bindings/display/ilitek,ili9486.yaml
2025年2月16日 星期日
在 Klipper 中使用 Fly 3D 的 D5
以前買來就直接使用。最近,怎麼都連不上。比較裝置的代碼,才發現不同
/dev/serial/by-id/usb-katapult_stm32f072xb_MELLOW-if00
燒了 Klipper 的 firmware,應是
/dev/serial/by-id/usb-Klipper_stm32f072xb_3C0029000557465036383420-if00
原來,在2024年9月1号之后出厂的D5已经刷好Katapult固件。
照著它的文件,就可以重新設定和 build 映像檔了。
https://mellow.klipper.cn/docs/ProductDoc/MainBoard/fly-d/fly-d5/flash/usb
燒入的指令
~/katapult/scripts$ python3 flashtool.py -d /dev/serial/by-id/usb-katapult_stm32f072xb_MELLOW-if00
喇叭要關掉,要設 default 值。
2024年12月13日 星期五
Orange Pi One 安裝使用
網拍上,有人便宜拍賣汰換的 Orange Pi One 單板電腦,相對便宜很多,就買了幾個回來備用。
到 Armbian - Orange Pi One 下載 image,是最新的 kernel。下載的是 xz 的壓縮檔,使用 unxz 解壓縮,unxz -k file.xz 則能保存壓縮檔。
可以使用圖形界面的燒錄程式,會檢查燒錄結果。也可以用 dd 或 dcfldd,後者較快,指令如下。
$ sudo dcfldd if=Armbian_xxx_Orangepizero3_bookworm_xxxx_minimal.img of=/dev/sde bs=10M
買的開發板,有附盒子,風扇,USB 轉圓柱頭的電源線,這些自己買,又要一百多吧。電源接頭規格 DC 4.0x1.7mm,打算買 DC-DC 的板子來將 24V 轉成 5V,給香橙派用。
WiFi使用
Orange Pi One,終究是 2016 的產品,使用上的體驗,速度遠比不上 2023 年出的 Orange Pi Zero 3。以電腦的進步來看,7年的時間,速度大約至少差 2倍。但是網拍的二手貨,很便宜,買一些來改 3D 印表機。3D 印表機改 Klipper,至少要一個上位機。只改一台,錢差一點沒差,但收集了一堆來改,改完想賣出,差幾百,就不一定有人要收,成本能省就省吧。 在成本上比較,前者,主板+WiFi+SD卡,約 400元,後者,主板+SD卡,約 600元。
安裝 armbian 的 image,版本比較新,https://www.armbian.com/orange-pi-one/ 。
即使安裝 network-manager,"apt install network-manager",執行 nmtui,顯示不正常。只好用 armbian-config 設定 WiFi。
參考 ARMBIAN OS - Networking,Armbian 使用 Netplan.io 來描述網路設定。使用 armbian-config 設定後,會將設定存在 /etc/netplan/armbian.yaml,直接修改設定,再執行 "netplan apply",即可讓設定生效。
# cat armbian.yaml
network:
version: 2
renderer: networkd
wifis:
wlx40a5ef154b5f:
# dhcp4: true
# dhcp6: true
addresses:
- 10.161.86.137/20
routes:
- to: default
via: 10.161.80.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.8.4
access-points:
"Samsung-A50-cc":
auth:
key-management: "psk"
password: "wifi-password"
"renderer: networkd",是指使用 systemd-networkd 的網路設定。但 Klipper 會安裝 NetworkManager。改用 NetworkManager,參考 Migrate Ubuntu server from NetPlan to NetworkManager without disconnection (possibly over SSH) 。
設定好 NetworkManager 後,Disable networkd and purge netplan:
$
sudo systemctl disable --now systemd-networkd.service systemd-networkd.socket networkd-dispatcher.service
$ sudo systemctl restart NetworkManager
$ sudo apt purge netplan netplan.io -y
要 disable systemd-networkd,但還是會被啟動。不過
ZSWAP 設定
參考 Armbian Documentation - Fine Tuning: Swap for experts,簡要說明如下。
By default Armbian implements ZRAM (writing nothing to ‘disk’ but compressing memory pages in RAM) but in case you often run into out of memory errors and your device has some capable storage (e.g. a securely attached NVMe or SATA SSD) you might want to use ZSWAP instead.
不太懂有什麼好,但設一下吧。修改之前,系統顯示訊息如下。
$ systemctl --type swap
UNIT LOAD ACTIVE SUB DESCRIPTION
dev-zram0.swap loaded active active /dev/zram0
$ dmesg | grep zswap
[ 1.308166] zswap: loaded using pool zstd/zbud
利用 SD 上剩下的一點空間,建立和掛載 swap,然後 Edit/uncomment /etc/default/armbian-zram-config so that it reads SWAP=false, reboot and you’re done.
修改後,系統顯示訊息如下。
$ systemctl --type swap
UNIT LOAD ACTIVE SUB DESCRIPTION
dev-disk-by\x2duuid-5f0613fb\x2d295b\x2d4587\x2d80ef\x2d54f0c1302a73.swap loaded active active /dev/disk/by-uuid/5f0613fb-295b-4587-80ef-54f0c1302a73
安裝 Klipper
依照 https://github.com/dw-0/kiauh 安裝 klipper。整個安裝過程,明顯比用 Orange Pi Zero 3 慢很多,可能要 2倍以上的時間。另外,由於記憶體較小,導致 tmpfs 的 /tmp 不足,在安裝 Moonraker 的階段,會耗盡 /tmp 的空間。因此需另建一個暫時的 tmp,步驟如下。
# Create a temp folder on a disk that has a lot of space:
sudo mkdir -p /bigtmp
# Set generous access to the temp folder:
sudo chmod 777 /bigtmp
# Change TMPDIR env to the big folder you just created:
export TMPDIR=/bigtmp
# install package
在安裝 Moonraker 時,改成用此暫時的 tmp。安裝其他的套件,則用 tmpfs,會比較快。安裝 moonraker,最多的時候,使用 /tmp 的空間約 266M。
安裝谐振测量所需的軟體
在執行到下列安裝指令時,很可能會掛掉,ssh 沒反應。
~/klippy-env/bin/pip install -v "numpy<1.26"
把僅有的 SD 空間,設成 swap,依上述 ZSWAP 設定,再儘可能把 service 停掉,擠出記憶體。
## 列出所有 active 的 service
systemctl list-units --type=service --state=active
OR
systemctl --type=service --state=active
## 把目前確定沒用的 service 都停掉
sudo systemctl stop klipper
sudo systemctl stop KlipperScreen.service
sudo systemctl stop NetworkManager.service
sudo systemctl stop moonraker.service
sudo systemctl stop nginx.service
終於安裝成功。
啟用 SPI
使用 armbian-config 啟用 sun8i-h3-spi-spidev,會在 /boot/armbianEnv.txt 中,加入一行
overlays=sun8i-h3-spi-spidev
從 console 看到載入失敗的訊息
Failed to load '/boot/dtb/overlay/sun8i-h3-sun8i-h3-spi-spidev.dtbo'
因為已加上 overlay_prefix=sun8i-h3。修改後,並加上 param 參數,成功看到 /dev/spidev0.0 的裝置。完整的 /boot/armbianEnv.txt 如下。
verbosity=1
bootlogo=false
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
rootdev=UUID=5fda7286-2a9d-4d7c-aa26-de3614b88ae6
rootfstype=ext4
overlays=spi-spidev
param_spidev_spi_bus=0
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
可以參考 /boot/dtb/overlay/README.sun8i-h3-overlays 的說明。
接線
IO 的接腳如下。

觸控屏
OPi One wiring:
Pin 23 - PC2 <--> SPI0 SCK & T_CLK
Pin 21 - PC1 <--> SPI0 SDO<MISO> & T_DO
Pin 19 - PC0 <--> SPI0 SDI<MOSI> & T_DIN
Pin 31 - PA8 <--> DC
Pin 33 - PA9 <--> RESET
Pin 29 - PA7 <--> LED
Pin 35 - PA10 <--> LCD CS
Pin 26 - PA20 <--> T_CS
Pin 28 - PA19 <--> T_IRQ
Pin 1 - 3.3V (or Pin 4 - 5V)
Pin 6 - GND
--------------
建立 /boot/overlay-user/ili9341_lcd.dts,內容如下。
/dts-v1/;
/plugin/;
/ {
compatible = "xunlong,orangepi-one", "allwinner,sun8i-h3";
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
// cs-gpios = <&pio 0 10 0>; /* PA10*/
cs-gpios = <&pio 0 10 0>, <&pio 0 20 0>; /* PA10 PA20 */
ili9341: ili9341@0 {
compatible = "ilitek,ili9341";
reg = <0>; /* Chip Select 0 */
#spi-cs-high;
spi-max-frequency = <40000000>;
rotate = <90>;
bgr = <0>;
fps = <30>;
width = <240>;
height = <320>;
buswidth = <8>;
reset-gpios = <&pio 0 9 1>; /*RESET=PA9*/
dc-gpios = <&pio 0 8 0>; /*DC_RS=PA8*/
led-gpios = <&pio 0 7 0>; /*LED=PA7*/
debug = <4>;
};
ads7846: ads7846@0 {
compatible = "ti,ads7846";
reg = <1>; /* Chip Select 1 */
#spi-cs-high;
spi-max-frequency = <1000000>;
interrupt-parent = <&pio>;
/* IRQ PA19 */
interrupts = <0 19 2>; /* IRQ_TYPE_EDGE_FALLING */
pendown-gpio = <&pio 0 19 1>; /* ACTIVE_HIGH */
/* ti,swap-xy = <0x1>; */
ti,x-min = /bits/ 16 <0>;
ti,y-min = /bits/ 16 <0>;
ti,x-max = /bits/ 16 <0x0FFF>;
ti,y-max = /bits/ 16 <0x0FFF>;
ti,pressure-min = /bits/ 16 <0>;
ti,pressure-max = /bits/ 16 <0xFFFF>;
ti,x-plate-ohms = /bits/ 16 <400>;
};
};
};
};
再執行下面的指令,
2024年11月26日 星期二
Docker 吃掉硬碟空間處理
- 參考 stackoverflow 的 Is it safe to clean docker/overlay2/
- 清除 ArchLinux 的 pacman cache,rumansaleem/clean-up-arch-linux.md
docker container 的 log 會無限成長,可以有好幾個 GB,只能手動刪除。
可以設 option,限制log 的大小。
2024年11月23日 星期六
MKS 安裝非官方 image -- redrathnure / armbian-mkspi
安裝 MKS PI 官方的 image,問題實在多,例如,重新啟動後,USB 無線網卡不會動,無法自己編譯 USB網卡的驅動。
redrathnure / armbian-mkspi,提供依據 Armbian 的 build image 程序所建立專案。
可以自己建,也可以直接下載已建立的 image 來用。
若有裝 MKS LCD,啟動後,可以在 LCD 上看到系統啟動過程。
安裝 rtl8188gu 驅動
安裝的是 McMCCRU / rtl8188gu 的驅動。
make 時,要加上參數,"make ARCH=arm64"。
另外,os_dep/linux/ioctl_cfg80211.c 中,呼叫 cfg80211_ch_switch_notify() 時,少一個參數,修改後,即可成功編譯。
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0, 0);
但是在載入 module 時,會出現無法載入 firmware 的錯誤。
預設是安裝 armbian-firmware,/lib/firmware 下,沒有 rtlwifi/rtl8710bufw_SMIC.bin。
若自己下載再 copy 到那個目錄下,會出現 Invalid firmware signature 的錯誤。
重新裝 armbian-firmware-full 後,就有 rtlwifi/rtl8710bufw_SMIC.bin 這個檔了。重新插拔 USB WIFI 網卡,可以正常載入 firmware。
2024年10月30日 星期三
CNC 使用摘要
透過網路買了一台二手 CNC,慢慢熟悉中。
使用的控制板,極造科技 VVIP_ESP32_V1.0,網路上找不到資料。
賣家寄出前,把它設成 AP mode,造著他說的,用網路連上後,再把 WIFI 設成 Client mode,可以用其他電腦連上。
確定正常後,開始探索,可以做些什麼事。發現板子上的 Micro USB,應該是 UART 界面。使用 putty 連上後,出現熟悉的 ok,可能是 forth 系統吧。打的字不會出現,換行後不會從頭開始顯示,果然和 forth 的特性一樣。修改 putty 的 terminal 的設定,勾選 "Implicit CR in every LF","Local echo" 設成 "Force on",操作就正常了。
可以使用的指令,參考 Grbl v1.1 Commands 。
WIFI 設定,參考 Can't Get WiFi to Connect #465。
安裝 FluidNC
安裝說明 FluidNC Web Installer。安裝很容易,照著說明做,完全不用自己編譯檔案。下載對應的 zip 檔,例如使用 Linux,下載 fluidnc-v3.8.3-posix.zip,解壓縮後,到解壓的目錄下,先把 USB 連上電腦,再執行 "sudo install-wifi.sh"。因為要有 root 的權限,才能開啟 /dev/ttyUSB0,所以用 sudo 執行。一路自動安裝完,然後自動進入 xmodem。