2026年3月27日 星期五

Raise3D 修改 root 密碼

Raise3D N2 的主板。



重開後,看到 U-Boot 訊息(Hit any key to stop autoboot: 0)就代表你已經掌握了這台機器的「生殺大權」。既然不知道 Linux 層級的帳號密碼,我們可以繞過登入程序,直接從 U-Boot 進入 Single User Mode 來重設密碼。 

1. 進入 U-Boot 指令模式

將板子重啟(斷電再通電)。

在看到 Hit any key to stop autoboot 倒數到 0 之前,趕快在鍵盤按下 任意鍵(通常是 Enter 或空白鍵)。

如果成功,提示字元會變成 MX6-SabreSD>(或是類似的標籤)。

使用 printenv 列出環境變數。

----------
=> setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=${mmcroot} init=/bin/sh video=mxcfb0:dev=ldb,if=RGB24,bpp=32 consoleblank=0'
=> run mmcboot
Booting from mmc ...
reading imx6q-sabresd.dtb
49185 bytes read in 20 ms (2.3 MiB/s)
Bad Linux ARM zImage magic!
==>
----------

出現 Bad Linux ARM zImage magic! 這個錯誤,通常是因為 U-Boot 在載入核心鏡像(zImage)時發生了位移或是抓錯了檔案位置。

觀察你的 printenv,這塊板子預設會先執行 loadbootscript(去讀 SD 卡或 eMMC 上的 boot.scr)。當我們手動改動 mmcargs 並執行 run mmcboot 時,可能因為環境變數中的位址(如 ${loadaddr})與實際檔案不匹配,導致 U-Boot 讀到了破碎的資料。

既然自動腳本 run mmcboot 失敗,我們改用最原始、最手動的方式來載入核心,這樣最精準。

手動啟動步驟 (Manual Boot)

-----------
=> mmc dev 2
mmc2(part 0) is current device
=> fatload mmc 2:1 ${loadaddr} zImage
reading zImage
5370320 bytes read in 143 ms (35.8 MiB/s)
=> fatload mmc 2:1 ${fdt_addr} imx6q-sabresd.dtb
reading imx6q-sabresd.dtb=> mmc dev 2
mmc2(part 0) is current device
=> fatload mmc 2:1 ${loadaddr} zImage
reading zImage
5370320 bytes read in 143 ms (35.8 MiB/s)
=> fatload mmc 2:1 ${fdt_addr} imx6q-sabresd.dtb
reading imx6q-sabresd.dtb
49185 bytes read in 19 ms (2.5 MiB/s)
=> setenv bootargs console=ttymxc0,115200 root=/dev/mmcblk3p2 rootwait rw init=/bin/sh video=mxcfb0:dev=ldb,if=RGB24,bpp=32
=> bootz ${loadaddr} - ${fdt_addr}

49185 bytes read in 19 ms (2.5 MiB/s)
=> setenv bootargs console=ttymxc0,115200 root=/dev/mmcblk3p2 rootwait rw init=/bin/sh video=mxcfb0:dev=ldb,if=RGB24,bpp=32
=> bootz ${loadaddr} - ${fdt_addr}
... 以下是啟動訊息 ...
Kernel image @ 0x12000000 [ 0x000000 - 0x51f1d0 ]
## Flattened Device Tree blob at 18000000
   Booting using the fdt blob at 0x18000000
   Using Device Tree in place at 18000000, end 1800f020
switch to ldo_bypass mode!

Starting kernel ...

Booting Linux on physical CPU 0x0
....
....
....
journald starting.  Commit interval 5 seconds
EXT3-fs (mmcblk3p2): using internal journal
EXT3-fs (mmcblk3p2): recovery complete
EXT3-fs (mmcblk3p2): mounted filesystem with ordered data mode
VFS: Mounted root (ext3 filesystem) on device 179:2.
devtmpfs: mounted
Freeing unused kernel memory: 296K (80c02000 - 80c4c000)
sh: cannot set terminal process group (-1): Inappropriate
-----------

修改密碼,重新啟動。

-------------
-- 掛載文件系統為「可讀寫」
# mount -o remount,rw /
-- 修改 root 密碼
# passwd root
-- 確保資料確實寫入 eMMC
# sync
# reboot -f
-------------

重啟後,就可以進入了。

----------
一直出現這樣的訊息,很擾人,SSH又進不去,console 的資訊一下就被洗掉
"[NetworkCheck Task]" gateway invalid, check wifi info valid end 1
[PaintMain] network status change "eth0" false 1 "" "" "" ""

修改 /etc/rc.local,把最後一行啟動指令關掉
#/opt/Raise3D/MXCUI-start.sh
-------------

現代電腦(SSH 客戶端)認為 ssh-rsa(基於 SHA-1)已經不夠安全,所以預設停用了它;而這塊板子上的 Dropbear 版本較舊,只提供這種加密方式。

------------
從遠端登入,出現下面的錯誤

$ ssh root@192.168.66.55

Unable to negotiate with 192.168.66.55 port 22: no matching host key type found. Their offer: ssh-rsa

-- 在連線時手動允許這台機器使用舊的密鑰類型
$ ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa root@192.168.66.55
------------














2026年3月26日 星期四

3D 印表機潤滑保養整理

這是和 AI 討論後,所決定的潤滑保養方式。

針車油

這是最普遍可以買到的潤滑油。可以到中油加油站的複合商店買到,便宜又大罐。


適合清洗舊油,光軸潤滑。

二號滑脂

中油加油站的複合商店有賣,不貴,大約一百多。但不是每家都有進,要多跑幾家才能買到,我就跑了五個加油站才買到。

不要買高溫,也不要買極壓的,它的添加物,像 鉬,會造成問題。

這是普遍使用的潤滑脂,比一般的黃油稀很多。

線軌保養

線軌會生鏽,若不保養,會鏽到慘不忍睹。但那只是表面,線軌要潤滑的是滑塊內的鋼珠。

潤滑脂可由側面的孔注入,使用的 #0 潤滑脂,比較適合。但潤滑脂不是想買就有,最普遍使用,號稱萬用的二號滑脂,都不容易找到了。曾在蝦皮買過白色鋰基潤滑油,後來細看規格,才知道是 #3 潤滑脂,用了會讓線軌跑不動。

在 AI 的指導之下,使用 2號滑脂與針車油混合,調出不同黏度的滑脂。

如 脂 : 油 比例 為 8 : 2,可得到 "像軟質面霜 的 1 號脂",適合 Z 軸,或全新的線軌。

脂 : 油 比例 為 6 : 4 ,可得到 "像濃稠煉乳的 0 號脂",適合有傷痕、需翻新的 X/Y 軸。

省事的話,就用 6:4 的 0號脂吧。調法,先脂後油,先量 6g的2號脂,再加入 4g的針車油,調到完全混合。

注意,只用中油的這兩種油可以混,其他不知成份的,不要亂混。

螺桿保養

Z軸的螺桿,速度較慢,直接使用 2號脂即可。

光軸保養

使用針車油。


2026年2月7日 星期六

培帝 S4060 改用 grblHAL

參考 (grblHAL) Additional or extended settings

培帝控制箱

下圖是控制箱的內部。


控制程式是 MACH3,透過 printer port 連接控制箱。控制箱有 MACH3 BOB 做訊號轉換,連接 CWD556 步進馬達驅動器,台達 1.5KW 變頻器,以及限位開關信號輸入。

配備一台具備 Printer port 的筆電,執行 XP。現在已很難找到有 printer port 的電腦,而且 MACH3 的授權也是問題,雖可用,但不喜歡。因此想把控制改成開源的 grbl 控制。

grbl,有人把它 port 到 STM32F103 上,但測過以後,發現少了 G83 之類的 Drilling cycle 指令,不太方便,而且幾乎沒有再改進。後來找到 grblHAL,目前尚在活躍的開發,而且支援多種 32bit 的 MCU。

參考網路上的 PicoBOB,再由 Gemini 的協助,自行設計 BOB電路板。選擇 STM32F411 來執行 grblHAL。

操作界面,使用 Orange Pi One 單板電腦,在其上安裝 cncjs。

台達VFD-M系列變頻器-設定

原來使用的主軸為昌盛 2.2KW 水冷主軸。嫌水冷麻煩,買了 1.5KW 風冷主軸,測試後,發現風冷主軸實在是非常吵。只好買電腦水冷散熱套件來裝,測試原來的主軸,發現可能軸承已磨損,振動非常大,又再買一個 1.5KW 水冷主軸,多花了不少錢啊。

  • P 00 頻率指令來源設定: 04 - 數字操作器(LC-M2E)上所附的V.R.控制,方便測試主軸。修改為 01 - 主頻率輸入由模擬信號DC 0∼ +10V 控制(AVI)。
  • P 01 運轉指令來源設定: 00 - 運轉指令由數字操作器控制,方便測試主軸。修改為 01 - 運轉指令外部端子控制,鍵盤STOP有效。
  • P 02 電機停止方式設定: 00 - 電機以減速煞車方式停止
  • P 03 最高操作頻率選擇: 400.0
  • P 04 最大電壓頻率選擇: 400.0
  • P 05 最高輸出電壓選擇: 220.0
  • P 06 中間頻率選擇: 1.5 -> 100
  • P 07 中間電壓選擇: 10.0 -> 55
  • P 08 最低輸出頻率選擇: 1.50 -> 20 (無法再高了)
  • P 09 最低輸出電壓選擇: 10.0 -> 11
  • P 36 輸出頻率上限設定: 400
  • P 37 輸出頻率下限設定: 0.00 -> 100,限制最低轉速為 6000

原培帝的 V-F 設定,P 06 中間頻率選擇: 1.5,P 07 中間電壓選擇: 10.0,P 08 最低輸出頻率選擇: 1.50 ,P 09 最低輸出電壓選擇: 10.0。

理想的 V-F 設定,400Hz 時給 220V,則 100Hz (6000轉) 時應該只給 55V。此設定會使得在頻率為 100時,電壓過高,使得馬達內部的矽鋼片會發生磁飽和。此時,多餘的電能無法轉換為磁場,而是直接轉換為熱能,導致電流異常飆升。

實際測試的值如下,1.5KW 水冷主軸。

  • F100,H100,A3.9
  • F150,H150,A3.4
  • F200,H200,A3.1
  • F250,H250,A3.1
  • F300,H300,A2.8
  • F350,H350,A2.7
  • F400,H400,A2.3

修改 V-F 設定,P 06 中間頻率選擇: 100,P 07 中間電壓選擇: 55,P 08 最低輸出頻率選擇: 20 ,P 09 最低輸出電壓選擇: 11。

修改後,測試的值如下。所有的電流都降低了。
  • F100,H100,A2.7
  • F150,H150,A2.8
  • F200,H200,A2.8
  • F250,H250,A3.0
  • F300,H300,A2.7
  • F350,H350,A2.7
  • F400,H400,A2.3



grblHAL 的 PWM 設定
---------
$30 24000 最大轉速。對應 400Hz (10V)。
$31 6000 最小轉速。確保軟體不會輸出低於 100Hz (2.5V) 的指令。
$33 1000 PWM 頻率。維持 1kHz 以確保 BOB 板電壓平穩。
$35 25.0 關鍵! 將最小 PWM 佔空比設為 25%。
$36 100.0   最大 PWM 佔空比設為 100%。
----------

步進馬達步數計數

MACH3 設定

Steps per (mm) = 馬達旋轉一圈總步數 * 減速比 / 螺桿導程 

其中,馬達旋轉一圈總步數,由驅動器 DIP 決定。減速比,若直連則為 1。螺桿導程,轉一圈移動多少 mm。

在培帝的控制系統,找到 X,Y,Z 的 [Steps per] 的設定值皆為 200,驅動器的 DIP 設定為 1000,反推 [螺桿導程] 為  1000 / 200 = 5。

grblHAL 的 $100 (X軸), $101 (Y軸), $102 (Z軸) 的設定方式,和 MACH3 完全相同,一樣是 200。








2026年1月29日 星期四

nvidia-drivers 升級至 580.126.09,閃爍問題

 在 Arch Linux,已發生此問題,一直以為是顯卡的問題。

直到 Gentoo,也升級到新版後,發生閃爍的問題。降回舊版驅動,就沒有此問題,因此確定是新版驅動的問題。

---------------------

NVIDIA driver version 580.126.09 is causing significant screen flickering issues, particularly on Linux (Xfce/Wayland) with applications and desktop components. Users report this issue as a regression from previous stable drivers. Immediate fixes include rolling back to a known stable driver, disabling the compositor, or waiting for a patch. 
Key Troubleshooting Steps for 580.126.09 Flicker:
  • Roll Back Driver (Linux/Windows): If the flicker started immediately after updating to 580.126.09, revert to the previous version via your package manager (Linux) or Device Manager (Windows).
  • Disable Compositor (Linux): On Xfce, turning off the compositor in settings may stop the flashing.
  • Clean Reinstall: Use DDU (Display Driver Uninstaller) to completely remove the current driver before reinstalling to rule out corruption.
  • Wait for Hotfix: NVIDIA frequently releases hotfix drivers for reported regressions.
  • Check Hardware/Cables: Ensure display cables are secure, as driver changes can sometimes exacerbate minor physical connection issues. 
For Linux users, this issue appears to be heavily affecting desktop environments, and reverting to the 580.95.05 driver has been reported as a workaround. 

---------------------

2026年1月4日 星期日

grblhal build

參考 https://github.com/grblHAL/core/wiki/Compiling-GrblHAL

 git clone --recurse-submodules https://github.com/grblHAL/STM32F4xx.git


Inc/my_machine.h
grbl/config.h

The default build environment for Pi Pico (RP2040) is VSCode, see the driver readme for link to information on how to.
Other drivers may also be built using VSCode, but this is not supported by the project for the time beeing.

2025年12月4日 星期四

DIY PCB 製作

 參考

從淘寶買了製作 PCB 的套件,放了好久, 一直沒用。到後來,蝕刻劑受潮,還把附的銅箔板腐蝕掉一大塊。直到最近,為了使用 FPC軟排線連接 Orange Pi 和 SPI LCD,只能使用 FPC 插座轉接板,要用手焊接很多線,不好看,板子又大。才認真考慮製作 PCB。

淘寶買的感光藍油,可以很方便製作感光銅箔板,成本也低。不便之處,要用透明膠膜印出 PCB負片,才能曝光。後來,在網頁上無意中發現,有人用光固化3D印表機當 PCB 的曝光機,效果不錯。剛好手邊有光固化機器,一直沒用,賣又不值錢,正好可以拿來用。

開始學習使用 KiCad 軟體,使用 KiCad PCB 編輯器,手工畫 PCB。PCB 畫好後,使用 [繪製] 功能輸出 pdf。

KiCad 輸出的 pdf,再用 InkScape 開啟,先在 [文件屬性] 中,將格式由 [px] 改成 [mm],會自動改變縮放比例。再另存成 SVG檔,這樣圖才不會變大。KiCad 也能直接輸出 SVG檔,但解析度有問題,會太低。

然後,使用 OpenScad 匯入 SVG檔,轉成有高度的 STL 檔,才能給光固化用。這個步驟,會有一個小問題,pad 的中空鑽孔,都被填滿了,看了很不習慣。在 OpenScad,要另外再加工一下,挖出那些孔。

使用 CHITUBOX (赤兔) 切片軟體,將產生的 STL 檔,產生切片檔,再 copy 到 USB碟,用光固化機器曝光。切片參數,首層的時間,改成想要的曝光時間,大約為 60秒左右。首層曝光完,就可以關掉,後面的不用跑了。

下圖是顯示的曝光在白紙上的情形,用來定位用。


顯影後的電路板


蝕刻後的電路板




2025年11月11日 星期二

安裝 CNCJS

 在 Orange Pi One 上安裝 CNCJS

參考

個人測試安裝

官方文件的資訊,已嚴重落後,如支援的 Node.js 的版本為 v4。目前透過 npm 安裝的 cncjs 是 1.10.5,在 github 的 package.json 中,要求的 Node.js 是 ">=18"。

"engines": {
  "node": ">=18"
},

安裝 "Node Version Manager" 來管理多個 Node.js 版本。

# 安裝 nvm
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
$ source .profile
$ source .bashrc

#安裝最新的 node.js
$ nvm install 22
$ nvm use 22

# 執行 node 會出現錯誤
# node: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory

$ sudo apt install libatomic1

# 更新 npm
$ npm install npm@latest -g

# 安裝 cncjs
$ npm install -g cncjs

# 更新 cncjs
$ npm install -g cncjs@latest

以上的安裝,只能以個人的身分執行。

執行後,在網頁上看到的畫面。



Global 安裝

為了自動啟始服務,使用 global 安裝。
# 設定網路之後,更新系統
$ sudo apt update
$ sudo apt upgrade 

# 安裝所需套件及 cncjs
$ sudo apt install nodejs npm git
$ sudo npm install -g cncjs --unsafe-perms 

# CNCjs Test Run
$ cncjs --allow-remote-access -p 8080 

# give us permissions to run on port 80 without root
$ sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/node 

# give permissions to use the serial port
$ sudo usermod -a -G dialout cncjs 

# 建立及啟動 CNCjs Systemd Service
$ sudo touch /etc/systemd/system/cncjs.service
$ sudo chmod 664 /etc/systemd/system/cncjs.service
$ sudo nano /etc/systemd/system/cncjs.service
$ sudo systemctl daemon-reload
$ sudo systemctl start cncjs
$ sudo systemctl enable cncjs 
 
# 下載 tinyweb 套件
$ cd ~
$ git clone https://github.com/cncjs/cncjs-pendant-tinyweb

建立 /etc/systemd/system/cncjs.service 如下。

[Unit]
Description=CNC Controller Web UI
After=network-online.target

[Service]
ExecStart=cncjs -p 80 -m /tinyweb:/home/cncjs/cncjs-pendant-tinyweb/src
User=cncjs
WorkingDirectory=/home/cncjs
Restart=always

[Install]
WantedBy=multi-user.target 

設定 tinyweb 

enable 的 service,連結放在 /etc/systemd/system/multi-user.target.wants


安裝 tineweb


安裝所需的 X window 的 package。

sudo apt install xinit xinput x11-xserver-utils \
    xserver-xorg-input-evdev xserver-xorg-input-libinput \
    xserver-xorg-legacy xserver-xorg-video-fbdev  \
    xdg-utils  chromium-browser 

修改 /etc/X11/Xwrapper.config,"allowed_users=anybody"


-------------
# 建立 start_tinyweb.sh
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 http://localhost:8000/pendant/
-------------

cncjs -m /tinyweb:/home/klipper/cncjs-pendant-tinyweb-1.2.4/src &

執行 xinit ./start_tinyweb.sh。

新增 shutdown 功能

進入 [Settings] (齒輪圖示) 功能,到 [Commands] 頁面,點選 [+ New],在 title 中輸入 "Shutdown",以及在 [command] 欄位輸入  "sudo shutdown -h now"。

賦予 shutdown 權限,執行 "sudo visudo" 指令,新增一面的內容

----------------------
cncjs ALL=NOPASSWD: /sbin/shutdown
----------------------







網誌存檔