2024年1月4日 星期四

小米 2S

 https://www.techbang.com/posts/14921-transmission-lines-millet-2s-easily-root

https://blog.twtnn.com/2016/09/22snote-4g-root.html

https://sixu.life/xiaomi-2s-international-version-of-root-tutorial.html


https://zhidao.baidu.com/question/173620507582411934


https://mi.ezbox.idv.tw/thread-1662-1-1.html

小米2S - 小米MIUI ROM 官方刷機包下載

http://www.android5.online/Android/androidsj/Androidsj/xmsj/201702/42860.html

https://onfix.cn/course/319?bid=1&mid=44


2024年1月3日 星期三

Orange pi zero 3 安裝 Klipper

Orange pi zero 3,1GB 記憶體,RMB 99,大概是目前能找到的最便宜的 clone PI3,適合用來當 Klipper 的上位機 (host)。

官網連結 - Orange-Pi-Zero-3

安裝參考 -- https://github.com/nhchiu/Klipper-on-Orange-Pi-Zero-2/tree/main

下載 image 及啟動

有提供各種版本的 image。其中 Orange Pi OS Arch System,沒有預設帳號/密碼,必須要有 HDMI 螢幕,透過界面啟始系統。

因此只能挑選 debian 或 ubuntu,版本代號如下

  • Debian 12 (bookworm) — 當前的穩定(stable)版
  • Debian 11 (bullseye) — 當前的舊的穩定(oldstable)版

另外,可到 Armbian - Orange Pi Zero 3 下載社群維護的 Image,版本較新。可下載較小的 [Debian 12 (Bookworm)],2025年6月的 kernel 版本為 6.12.30-current-sunxi64。

剛開始,沒有網路之前,只能用 uart 連上系統。

在 Linux 下,使用 USB-RS連結,tx - rx, rx - tx,線要交換才行件。連線指令如下,視使用的 USB-UART,裝置可能是 /dev/ttyUSB0 或 /dev/ttyACM0。

sudo minicom -b 115200 -D /dev/ttyUSB0

或者,putty 比較好用,在 Linux 和 Windows 的環境下使用,功能是一致的。

開機後的訊息大致如下。下面是較舊版本的畫面。

--------------
=== 開機後的畫面 ===
[  OK  ] Finished lircd(8) initialization helper tool.                          
[  OK  ] Finished Permit User Sessions.                                         
         Starting LSB: set CPUFreq kernel parameters...                         
         Starting Flexible IR remote input/output application support...        
         Starting Hold until boot process finishes up...                        
         Starting Terminate Plymouth Boot Screen...                             
                                                                                
orangepizero3 login: orangepi (automatic login)                                 
                                                                                
  ___  ____ ___   _____             _____                                       
 / _ \|  _ \_ _| |__  /___ _ __ ___|___ /                                       
| | | | |_) | |    / // _ \ '__/ _ \ |_ \                                       
| |_| |  __/| |   / /|  __/ | | (_) |__) |                                      
 \___/|_|  |___| /____\___|_|  \___/____/                                       
                                                                                
Welcome to Orange Pi 1.0.0 Bullseye with Linux 5.4.125                          
                                                                                
System load:   63%              Up time:       1 min                            
Memory usage:  21% of 952M      IP:                                             
CPU temp:      48°C             Usage of /:    6% of 29G                        
                                                                                
[ General system configuration (beta): orangepi-config ]                        
                                                                                
Last login: Fri Jun 30 06:37:41 UTC 2023 on tty1                                
orangepi@orangepizero3:~$
--------------

第一次開機,會執行 resize filesystem 的指令,"[   22.451445] EXT4-fs (mmcblk1p2): resizing filesystem from 1274075 to 7738843 ..."

預設帳號是 orangepi,密碼也是 orangepi。

使用 Armbian 的 image,第一次開機,會要求設定密碼,建立一般使用者帳號密碼。

網路

沒有連上網路就一無所用。接上有線的網路,找到 IP,再從遠端進入是最快的方式。若要接 HDMI 螢幕,再用滑鼠鍵盤設定 WIFI,可能有點麻煩,因為只有一個 USB 孔,也許還推不動鍵盤和滑鼠。

可以使用下面的指令來設定網路。

$ sudo orangepi-config

亦可參考 Orange PI 的 WIKI WIFI connection test,用下指令的方式連上 WIFI。

但是,因為環境的關係,必須要設定固定 IP,得用下面的一長串指令完成。

最後的選項 "connection.autoconnect yes",可在系統重開後重新連線。 

$ nmcli dev wifi                                           
IN-USE  BSSID              SSID                           MODE   CHAN  RATE   
        40:EE:15:DA:6B:D8  Samsung-A50-cc                 Infra  9     270 Mbit
        04:D9:F5:DD:52:A0  PressRoom2019                  Infra  10    195 Mbit
        20:9C:B4:C8:57:41  eduroam                        Infra  1     130 Mbit

$ 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.113/20 \
   ipv4.dns 8.8.8.8,8.8.8.4 \
   ipv4.gateway 10.161.80.1 \
   connection.autoconnect yes
Connection 'Samsung-A50-cc' (39d9f647-c090-4b83-9a41-30d02411cc26) successfully added.

可以使用 "nmcli con del Samsung-A50-cc" 刪除連線,再次測試上述指令。也可用下述指令變更設定。

# nmcli con mod Samsung-A50-cc ipv4.addresses 10.161.86.113/20
# nmcli con mod Samsung-A50-cc ipv4.gateway 10.161.80.1 eth0

或者直接修改設定檔,其存放目錄為 /etc/NetworkManager/system-connections/

若可以先用網路線連上,使用 nmtui 設定比較快。

$ sudo ip a add 10.161.86.115/20 dev eth0

執行 apt update 及 apt upgrade,更新系統。

執行更新,apt update --allow-releaseinfo-change。若出現 "Certificate verification failed: The certificate is NOT trusted" 的錯誤,執行下列指令,"apt-get install ca-certificates --reinstall"。

使用 Armbian 的 image,可以用 armbian-config 設定網路,可以設固定 IP,不用像上面這麼麻煩。

安裝 Klipper

接下來就可以透過 KIAUH 安裝 Klipper 了。在裝 Klipper 之前,磁碟使用空間 2.1G,裝完後為 4.2G。

注意,使用普通的使用者來執行。

$ git clone https://github.com/dw-0/kiauh
$ ./kiauh/kiauh.sh

進入安裝畫面如下。


移除 netplain

Armbian 的 image,使用 netplain 啟動網路,會造成開機卡關。若沒有停掉 netplan 和 systemd-networkd,開機會要等 3分鐘才完成。

設定好 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

移除後,開機就變快很多了。

ADXL345

參考 Setting up ADXL345 on orange pi lite 2 的討論。

ADXL345 PinOrgange Pi Pin
3.3V VCCCON12-P01
GNDCON12-P06
CSCON12-P24
SDOCON12-P21
SDACON12-P19
SCLCON12-P23





2023年12月14日 星期四

在 Linux 下使用 Autodesk Fusion 360

 https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux

3D 列印,很多分享的檔案都用 step 檔。Autodesk Fusion 360 雖然是付費軟體,但提供個人用途的免費使用,就來試試吧。

unset LANG,unset LC_ALL 後,安裝 app-emulation/wine-staging, app-emulation/dxvk。執行 install.sh 時,只要把語言改成 English,選擇 Gentoo,會要求 su 的權限,自動安裝缺少的 package。


https://askubuntu.com/questions/516307/how-do-i-change-default-wine-browser-to-native-ubuntu-browser-instead-of-ie


2023年12月12日 星期二

點焊機 DIY

NY-D02 點焊機控制板

此控制板是寧洋科技的產品,NY,應為 "寧洋" 的縮寫吧。關於控制板的資訊,在淘寶的產品頁面有詳細的說明,將一些資訊整理在此,方便參考。

NY-D02,雙脈衝控制板。

雙脈衝輸出,第一個脈衝除掉焊件表面的髒並預熱,第二個脈衝焊接。增強焊接功能,並且焊點不發黑。

電壓校準

因本控制器帶有網壓補償功能,所以,第一次裝機時,要進行電壓校準。以後只要不更換電源變壓器,就不用再校準。

校準操作,在運行狀能時,長按微動開關,直到時間,電流,間隔的燈全部亮起,此時用萬用表測量一下巿電電壓,比如當時測量的電壓為225V,那麼,旋轉編碼器,使數碼管顯示的值為 225 即可,然後雙擊微動開關,退出校準。

操作顯示板指示燈說明


  1. 電源 - 系統電源,常亮
  2. 腳踏 - 當腳踏開關閉合時,此燈亮
  3. 觸發 - 當可控矽觸發時,此燈亮。亮的時間和焊接時間相等
  4. 運行 - 允許焊接時,此燈常亮。設置參數時,此燈滅
  5. 時間 - 第一次脈衝時間。運行時: 第一次脈衝同步點亮。參數查詢 :此燈亮,數碼管顯示當前設定的焊接時間值。參數設置:此燈亮,數碼管閃爍,通過編碼器修改當前值。
  6. 電流 - 第一次脈衝焊接電流。運行時: 脈衝同步點亮。參數查詢 :此燈亮,數碼管顯示當前設定的焊接電流值。參數設置:此燈亮,數碼管閃爍,通過編碼器修改當前值。
  7. 間隔 - 第一次脈衝焊接和第二次脈衝焊接間隔時間。運行時:間隔狀態同步點亮。參數查詢 :此燈亮,數碼管顯示當前設定的間隔時間值。參數設置:此燈亮,數碼管閃爍,通過編碼器修改當前值。
  8. 時間 - 第二次脈衝時間。運行時: 第二次脈衝同步點亮。參數查詢 :此燈亮,數碼管顯示當前設定的焊接時間值。參數設置:此燈亮,數碼管閃爍,通過編碼器修改當前值。
  9. 電流 - 第二次脈衝焊接電流。運行時: 脈衝同步點亮。參數查詢 :此燈亮,數碼管顯示當前設定的焊接電流值。參數設置:此燈亮,數碼管閃爍,通過編碼器修改當前值。
時間,1-100 個週波,一個週波 20ms。電流,300-999,步進值 0.1%。300-999 代表 30.0% - 99.9%。

DIY 点焊机教程

購買提示,40A 和 100A 都可以輕鬆點焊 0.15mm 及以下鍍鎳片。40A 和 100A的不同之處在於,40A 控制板配 16平方點焊筆,100A 控制板配 25平方點焊筆。100A 控制板可以後期擴展增加變壓器數量加大功率,40A 控制板則不行擴展。

四、焊接調試 -- 就是看焊接效果

接下來,進行焊接測試囉。將插頭插上 100V 巿電,可以清楚的看到數碼管顯示的時間和電流。NY-D01 控制板有兩個電位器,一個調節時間,一個調節電流,使用起來很方便。接下來就可以焊接了。個人建議,調試的時候,先將時間調節到 01,電流調節到 30,然後看看焊接效果。如果不行,逐漸增加電流,直到有明顯的火花出來,電流大小就可以了。如果焊接不牢,就適當的增加時間,時間建議每次增加一個週波。

下面是時間 02 / 電流 75 的焊接效果,亦即時間為 40ms,電流為 75%。


點焊機 DIY 制作提示單

點焊機 DIY 制作提示單,請大家自行對照改造。(非常重要,請先閱讀再製作)

1: 問: 為什麽上電後沒有觸發?

答: 點焊機控制板工作電源需要的是交流電,沒有觸發的,基本上都是用了直流電,而導致不觸發不工作。換了交流電源 (AC9V-AC12V 範圍內) 就可以啦。

2: 問: 為什麽焊不牢? 焊片一撕就掉? (注意以下四條都要符合才可以)

這個問題,分多個原因。1 答: 這個問題,分多個原因。下面一一講解,請對照一下自己是否存在這些問題。

A: 焊接變壓器功率不夠。大部分的 DIY朋友,都是用微波爐變壓器來改造的。首先,一個微波爐變壓器,(無論 800W 鋁 的還是 900E 銅的) 焊 0.15鍍鎳片和 0.1純鎳片是比較理想的。有的朋友想用一個微波爐變壓器來焊 0.2的鎳片,那就是比較困難了。所以,首先看下,自己的焊接變壓器功率是否夠。

B: 變壓器次級改造用線太細。改造次級,最少也要 25平方以上的電纜,而且需要那種細絲軟線 (紫銅材質最好),扒外皮做絕緣後再纏,纏四圈,次級電壓 3.5V左右的樣子。有的朋友次級用線太細,纏的圈數雖然多,電壓雖然高,但是卻限制了電流,導致焊接不上。所以,請對照電纜粗細,最少25平方以上 (說的是國標線哈,非標的不行的)。越粗效果越好呢。

C: 點焊筆過細過長。我們建議點焊筆越短越好,我們做的一般都是 50CM左右,同樣也是焊筆越粗效果越好。比如有的朋友用 16平方的線,長度一米,是焊不上了的呢。

D:變壓器是“水貨”嘍。近年DIY的興起,讓廢舊的微波爐變壓器一路走俏,有些不良商家也就打起了這個市場主意。親們觀察一下自己手裡的變壓器,有的雖然標稱 800W,但是厚度根本不夠。正常厚度應該在 77mm 左右,低於這個厚度的,功率都不夠,基本焊接厚度也就停留在 0.1mm 的鍍鎳焊片差不多,有的甚至連 0.1也焊不牢。

3: 問:我要焊18650電池,時間和電流參數設置多少?

答: 這個參數不是固定的,因為每個人 DIY 都是不一樣的。正常參數範圍應該是: D01 和 D03, D04款時間 05以內,電流 60以上,D02款電流 600以上,時間 05以內,並且第一個電流小於第二個電流,間隔時間同樣 05以內。時間盡量短,感覺火力不夠就調高電流,根據自己的情況進行調試,調試需要耐心,焊接需要多練習,大家都會焊出自己期望的漂亮焊點來。

4: 問: 關於散熱片,需不需要加?

答 :因為點焊機工作是瞬時工作,所以一般DIY自用的親們一般也不用加散熱片。也就是說散熱片不是必須的。當然如果想 加一片也是不錯的。關於散熱片也沒有規定必需的樣子,一般鋁散熱片就可以了。 

5: 問: 兩個微波爐變壓器如何改造?

答: 使用兩個微波爐變壓器的,建議選用兩個一模一樣的,初級並聯,次級串聯,一個兩圈,次級線越粗越好,最少50平方以 上。注意兩個變壓器,一定要使用 100A的控制板,41A的容易被擊穿呢。

NY-D01 單脈衝點焊機控制板

NY-D01 是單脈衝點焊機控制板。

以下擷錄自露天/淘寶網拍的說明,搜尋關鍵字 "NY-D01 點焊機控制板 調節時間電流數碼顯示單片機點焊機diy控制板"。

買前請充分了解點焊機基本原理和有關描述,比如交流電源也不懂的朋友,拍個板子回去接個路由器電源來責問怎么不能用?為什么買的時候不提醒一下?其實描述里都說了,只是個別朋友把插交流電上的 9V 12V 穩壓電源認為是交流電源了!那是交流電嘛?那是整流出來的直流電!DIY 也容易制作失敗和損壞板子,再者畢竟接觸的是 220V 交流強電,一不小心容易發生安全事故。無電子電工基礎知識的玩家一定勿拍!因為不懂也無法準確描述故障,出任何問題就說板子問題,比如曾有一個客戶點焊不穩,就臆想是板子的輸出電壓不穩,就去測變壓器的輸出電壓,顯示是一會兒大一會兒小的,但不想想數字表可以測脈沖電壓嘛?採樣 0.3秒的數字表可以去測 0.1-0.2秒的脈沖電壓?

自製點焊機很容易失敗(其實也不是失敗,就是達不到自己想象的效果而已),實質就是電流小唄,所以不是系統地去了解和學習,而學著其他朋友或憑自己想象隨便買了一堆東西是不一定做好的;強不強不是一個部件決定的,有人 900W 全銅也點不住 0.15mm 純鎳,有人 800W 鋁也能點 0.15 純鎳,這個能的知道變壓器是弱處,他繞組線就加強一下到 30平方,然后繞組線直接點焊針,不用快接座不用黃銅焊筆。

注意:售價 43元的控制板就是主圖中的裸板一塊,不含任何變壓器和其他配件!本板子是交流變壓器控制板,不能做法拉電容儲能的控制板!

      “NY-D01 單脈沖控制板 40A”就是板載 40A 可控硅;需要 100A 的就再拍一只 100A 可控硅,自己換一下,價格和出廠裝好 100A 的也差不多,自己換可以多下一只 40A 備用。

注意:41A 可控硅一般只能接一只微波爐變壓器,大約 700W-800W 初級鋁線,900E 全銅比較勉強,有時候會損壞,建議也換 100A,接 2只變壓器一定要換 100A 可控硅。其他環牛或其他未知參數變壓器一般也要 100A ,這樣保險一點。

        一直有客戶問這個 40A 可以多少電流去點焊?100A 可以多少電流?掌柜回答和點焊電流沒有直接關系,更不要理解為換 100A 會比 40A 的點焊電流大。可控硅大小主要是根據變壓器功率來選擇可控硅。可控硅可理解為家里的空氣開關(斷路器,閘刀)只負責開關而已,斷路器的電流根據負載功率而定。但不是換個大點的空氣開關會提高負載的功率!比如 40A 換 60A 的空氣開關,你家的 2匹空調也不可能會變成 3匹!但空調多了或換 5匹的了,你空氣開關肯定要換大的了!

      功率舉例:40A 可以接一個 900W 變壓器 (點焊時瞬間可以 2000W 左右),如果次級 2.5V,就可以 800A 的瞬間點焊電流,如果次級 5V,則是 400A 的電流,所以掌柜回答可控硅大小和點焊電流沒有直接關系就是這個道理,當然一般點焊電流大了,功率也大了,可控硅也需相應大了。

因為我們板子的響應非常快,假如您的腳法足夠快,連續踩 2次,可以等于雙脈沖點焊機,所以腳踏開關有腳踏開關的好處,用一體焊筆的微動開關的就難實現不了!用腳踏的好處是不影響手持焊筆的壓力,當你手腳協調好的情況下,其實還是手腳分離工作的好,人手是最靈活可控的,不同厚度鎳片和多種情況可以即時調整我們的手持壓力,一個固定壓力并不是完美的。

     本型號板子可以配有2種電流的可控硅,規格價格看選項。40A 和100A可控硅可相互直接替換,不用改變吸收RC大小。板子設計兼容 40A 和 100A。

    本板子的時間同步控制採用單片機的精密過零同步觸發,來保證每個輸出脈沖的同步度和精確個數,所以電流控制可以做在低壓的光耦前端,使用更安全。后面觸發電流兼容 40A和 100A管子,電流調節也不是傳統觸發電流的 RC,我們是直接控制的是脈沖寬度。

    以往市場較流行的控制板只是簡單通過調節 RC 單穩觸發電路的常數來控制時間,再通過一個光耦門來輸出周波,雖然在一定時間內可以大概控制多少個脈沖,但顯然不夠精確。而且 RC 調節里的 R是個高阻電位器,易收到自身脈沖大電流的干擾。使得每次點焊時間不穩定,所以也經常遇到有些朋友焊點忽大忽小的。更因為 555 時基電路觸發後復位需要等待時間的,連續腳踏觸發會引起時基誤差,所以設計者做了防誤觸發功能,實際就是讓頻繁的觸發失效,所以這些板子的觸發速度不會高于每秒 2次,一些點焊熟練點焊工和自動點焊機這個速度就不行了。

   掌柜做了個視頻對比,大家可以看 60秒的寶貝主圖視頻,我們的這個板子可以做到一秒 5-6 次以上的可靠觸發。而且是 1個 2個直至 50個脈沖的精密控制。

     國內廠家的幾十元 DIY 點焊機板子,更不可能去用日本阿爾卑斯電位器的,即使正規國產貨,壽命和 ALPS 相差甚遠,基本 1-2 年后就可能會有接觸不良,以前搞 DIY 音響的朋友特別明知,一會兒響一會兒低,還有很大的旋轉噪音。現在我們這個 N01 板子至少有個數顯,電位器調節的是壓控數字量,并不是直接延遲時間 RC 裡的 R,這點如同音響電路里的直流音量控制器,哪天電位器明顯接觸不良了,你還能知道數字的跳動;而沒有數顯的板子,哪天電位器接觸不良了,影響到焊接電流的忽大忽小,您可能也不知道~~

       目前較先進的交流脈沖點焊機控制板子有 2個關鍵要素,一個是過零觸發,第二個是精密周波數控制時間。所以我們的供電電源只能是交流輸入,不能直流電做電源的,直流電就實現不了過零觸發點了。而不是過零同步觸發的控制板,說是需要交流電供電,你給直流 9V電照樣工作的,就說明不是同步過零觸發板。

        注意:我們的板子可控硅部分的 RC 吸收是專為大多客戶的微波爐變壓器而優化設計的,在使用其他變壓器時,可能會發生抑制不完全而產生干擾影響正常工作,甚至損壞管子,所以更換到非微波爐變壓器時請有個心理準備。

安裝時:主板盡量離大變壓器遠一點!更不能座在變壓器上!因為大變壓器有強大的電磁干擾!

2023年12月7日 星期四

紅米2 手機安裝 Klipper

 紅米2手機 xiaomi redmi 2 

HM2LTE-sa

作業系統與版本 Android 4.4

處理器品牌 Qualcomm

處理器型號 Snapdragon 410

主螢幕尺寸 4.7 inch

主相機畫素 800 萬畫素

RAM記憶體 1 GB

ROM儲存空間 8 GB

電池容量 2200 mAh


Basically, in old Redmi devices, the bootloader is usually unlocked, unlike the new Redmi devices. So you just need to flash the TWRP or CWM zip file into the system replacing the stock recovery of Xiaomi.


參考 https://quickfever.com/root-redmi-2-without-pc/,完全不用 unlock bootloader,只要安裝 root 軟體即可 root。

  • 下載 Redmi2Root.zip
  • [系統工具] > [系統更新] > [...] > [手動選擇安裝檔案]
  • The new Root zip auto installs the SuperSu app on your phone, so any app will ask for root permission and you need to allow them to give root access.


主要參考這個 gaifeng8864 / klipper-on-android 

1. 安裝 kerneladiutor

高通处理器默认有个MPD功耗控制方案,默认情况下会关闭部分CPU核心来控制功耗。 由此带来的最大的问题就是在debian系统里会发现4核心的处理器大多数情况下却只识别出2个核心。 kerneladiutor是简单好用的安卓系统的内核管理软件,用来调整CPU和GPU的频率和性能。可以强制开启所有CPU核心,充分利用手机的性能。


2. 安裝 Linux Deploy,Android 版本較舊,只能安裝較舊的 2.5.1。參考說明,安裝 Debian / oldstable。

要把 print3d 加入 group,不然無法存取網路

 sudo usermod -a -G aid_inet,aid_net_raw print3d

因為紅米2 的儲存空間只有 8GB,系統使用後,剩餘空間只有 2GB 左右。不夠裝 Klipper,必須使用 SD卡。但 SD卡必須使用 ext4 的格式,不然無法安裝成功。但 ext4 格式,Android 的檔案管理無法存取,所以將 32GB 的 SD卡切割成雨部份, FAT32 的 12GB,其餘的 ext4。 

[GUIDE] How to mount ext4 formatted MicroSD card on Android 4.2.2 Phone/Tablet

[Linux Deploy]将linux安装在sd卡区的注意事项

使用 Terminal Emulator,cat /proc/partitions 列出 sd card 的分割區名稱,例如 mmcblk1p2。則在 Linux Deploy 中,Installation type --> Partition,Installation path --> /dev/block/mmcblk1p2。

裝好 klipper,moonraker,fluidd,KlipperScreen 这4个组件後,使用空間約 4GB。裝好後,print3d 的目錄如下。





2023年12月3日 星期日

MKS Monster8 setup


You can then hold reset (blue box), hold boot0 (labled above the blue box) and release reset followed by boot0 to enter DFU mode.

------------------
$ lsusb
Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 003: ID 0483:df11 STMicroelectronics STM Device in DFU Mode
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
------------------


------------------
$ make flash FLASH_DEVICE=0483:df11
  Flashing out/klipper.bin to 0483:df11
sudo dfu-util -d ,0483:df11 -R -a 0 -s 0x800c000:leave -D out/klipper.bin

[sudo] password for mks: 
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0483:df11
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash  "
Downloading to address = 0x0800c000, size = 26540
Download [=========================] 100%        26540 bytes
Download done.
File downloaded successfully
Transitioning to dfuMANIFEST state
dfu-util: can't detach
Resetting USB to switch back to runtime mode
-------------------

 

-----------------------
[  555.931877] usb 3-1: USB disconnect, device number 2
[  559.147501] usb 3-1: new full-speed USB device number 3 using ohci-platform
[  559.380615] usb 3-1: New USB device found, idVendor=0483, idProduct=df11, bcdDevice=22.00
[  559.380661] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  559.380684] usb 3-1: Product: STM32  BOOTLOADER
[  559.380703] usb 3-1: Manufacturer: STMicroelectronics
[  559.380722] usb 3-1: SerialNumber: 206E327F5131
[ 1296.862092] usb 3-1: USB disconnect, device number 3
[ 1297.345378] usb 3-1: new full-speed USB device number 4 using ohci-platform
[ 1297.579565] usb 3-1: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00
[ 1297.579585] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1297.579593] usb 3-1: Product: stm32f407xx
[ 1297.579599] usb 3-1: Manufacturer: Klipper
[ 1297.579605] usb 3-1: SerialNumber: 3E003B000C50315141323320
[ 1297.585773] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
[ 1362.504573] usb 3-1: USB disconnect, device number 4
[ 1364.860800] usb 3-1: new full-speed USB device number 5 using ohci-platform
[ 1365.095898] usb 3-1: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00
[ 1365.095932] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1365.095948] usb 3-1: Product: stm32f407xx
[ 1365.095960] usb 3-1: Manufacturer: Klipper
[ 1365.095973] usb 3-1: SerialNumber: 3E003B000C50315141323320
[ 1365.100273] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
------------------------





2023年11月29日 星期三

Gentoo 安裝 -- 2023

 ** 切記,裝好 kernel 和 grub 後,重開機前,一定要記得更改 root 的密碼。

從 1994 左右開始,自己的桌機,就一直是安裝 Gentoo Linux,至今快 20年了。這 20年中,硬體的效能進步好幾十倍,以前完全裝好要兩三天至一個星期,現在縮短到一兩天左右。

使用 Gentoo 的特點,每個 package 都要自行編譯後,才安裝,要花很多時間。這樣做有沒有必要呢? 到後來變成單純是樂趣吧,且可以透過它在編譯的過程中,學到許多 Linux 和 Open source 的作法,在效能上並不會有太大的影響。這次 (2023年 12月) 安裝,最顯著的差異是有所謂的 Distribution Kernel,不用自己設定 kernel 的選項。自己設定 kernel,常常會設定不正確,無法開機,或某些應用程式無法安裝或使用。

首先,要找個可開機的系統來進行安裝。例如使用 Ubuntu,在進入圖形的環境下,可以一邊上網看安裝指引,一邊進行安裝。

安裝前,要先規畫安裝 Gentoo Linux 的硬碟分割。以下是目前自己在用的系統,硬碟的使用情形。

# df -h
檔案系統             容量   已用  可用  已用% 掛載點
/dev/root           98G   48G   46G   52% / 
/dev/nvme1n1p4     354G  167G  169G   50% /home

使用 500GB PCIe SSD 的分割情形 

                               Disk: /dev/nvme0n1
             Size: 477 GiB, 512110190592 bytes, 1000215216 sectors
          Label: gpt, identifier: FEA1EFAE-49CD-45B9-A15B-5A5EF9069055

    所用裝置              Start        結束       磁區    Size 類型
    /dev/nvme0n1p1         2048        6143       4096      2M BIOS boot        
    /dev/nvme0n1p2         6144      313343     307200    150M EFI System
    /dev/nvme0n1p3       313344    21284863   20971520     10G Linux swap
    /dev/nvme0n1p4     21284864   231000063  209715200    100G Linux filesystem
    /dev/nvme0n1p5    231000064  1000215182  769215119  366.8G Linux filesystem

目前大部份的 Linux 都使用 systemd,使用  "eselect profile" 選擇 profile 時,可以只選擇 "systemd",儘快裝好一個空的系統,確認可以重新開機。merged-usr,是指 bin, lib, lib64, sbin 等目錄都和 usr 下的目錄合併,不再分開。

雖然現在的 SSD 很快,如 nvme ssd 更是快,但和 DRAM 比起來,仍然比較慢。為了提昇 emerge 套件的速度,並且避免頻繁寫入 SSD,在記憶體也夠大時,在安裝過程可以使用 tmpfs 。emerge 過程,檔案是放在 /var/tmp/portage 的目錄下,在 chroot 中,需手動 mount tmpfs,指令如下。注意,tmpfs 的大小,一般不宜超過一半的記憶體。

# mount -t tmpfs -o size=4G,uid=portage,gid=portage,mode=755 /var/tmp/portage
有時,要暫時修改 tmpfs 的大小,可以執行下面的指令。
# mount -o remount,size=4G,noatime /tmp

在圖形界面,目前都用 lightdm 登入,並且在 USE flags 加上 "cjk",讓它支援中文。這時候,大概得等到裝好一個輕量級的 Xfce 桌面,才能比較方便的使用新裝好的 OS。這過程,大概要一天吧,還是先用 Ubuntu,進 chroot 繼續後面的安裝步驟,直到有 xfce 可用。

在開機前,要裝好 grub,編好 kernel,更改管理者密碼。常常忘了設定管理者密碼,又要重新 chroot 一次,設定密碼。

更改 host name 的方式如下,便於分辨在那台機器上。

hostnamectl set-hostname aj-i9

裝好的系統,可以在 /etc/fstab 中,加上 tmpfs 的掛載,可以自行參考網路資料。https://wiki.gentoo.org/wiki/Portage_TMPDIR_on_tmpfs

可以安裝 app-portage/cpuid2cpuflags,來偵測 CPU_FLAGS_X86 flags,然後將其加入 /etc/portage/make.conf 中。

在 /etc/portage/make.conf 中,我會加的設定。
ABI_X86="64 32";同時支援 64位元和32位元的程式庫,因為我會用 32 位元的 WINE。
GRUB_PLATFORMS="efi-64 pc";grub 同時安裝 efi 和 dos。

LINGUAS="zh_TW";中文的環境
L10N="zh-TW zh-CN"

INPUT_DEVICES="evdev keyboard mouse";X window 的設定
VIDEO_CARDS="vesa nouveau nv"
ALSA_CARDS="hda-intel"

設定時區

# echo "Asia/Taipei" > /etc/timezone
# emerge --config sys-libs/timezone-data
再來,修改 /etc/locale.gen,然後執行 locale-gen,產生 locale。
en_US ISO-8859-1
en_US.UTF-8 UTF-8
 zh_TW.UTF-8 UTF-8

zh_TW BIG5
zh_CN.UTF-8 UTF-8
zh_CN GB2312

IP 設定

注意,要先執行 systemd-machine-id-setup,建立 machine ID,journal 才會正常運作,service 才會正常起動,網路也才會起來。

建立檔案 /etc/systemd/network/50-wired.network

[Match]
Name=eno1
[Network]
Address=10.61.86.133/20
Gateway=10.61.80.1

[Address]
Label=eno1:1
Address=10.161.86.133/20
DHCP
[Match]
Name=enp*

[Network]
DHCP=yes

然後,設定服務
systemctl enable systemd-networkd.service
systemctl start systemd-networkd.service

Note that systemd-networkd does not update resolv.conf by default. To have systemd manage the DNS settings, replace resolv.conf with a symlink and start systemd-resolved.

ln -snf /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl enable systemd-resolved.service
systemctl start systemd-resolved.service 

設定時區 (使用 systemd)
# timedatectl set-timezone Asia/Taipei
# timedatectl set-ntp yes
# timedatectl set-local-rtc no


大概就這些吧。

手動設定 IP:
ip addr add 10.1.1.2/16 dev eth1
ip link set eth1 up

安裝 kernel 及設置 grub2

先安裝 sys-kernel/gentoo-kernel-bin,可以很快的裝系統重新開機。假如要重裝 sys-kernel/gentoo-kernel,必須要先 emerge -W gentoo-kernel-bin,再 emerge -av gentoo-kernel。這樣會先移除 gentoo-kernel-bin,因為兩者不能同時安裝。

 * Messages for package sys-kernel/gentoo-kernel-6.1.60:

 * Your configuration for sys-kernel/gentoo-kernel-6.1.60 has been saved in 
 * "/etc/portage/savedconfig/sys-kernel/gentoo-kernel-6.1.60" for your editing pleasure.
 * You can edit these files by hand and remerge this package with
 * USE=savedconfig to customise the configuration.
 * You can rename this file/directory to one of the following for
 * its configuration to apply to multiple versions:
 * ${PORTAGE_CONFIGROOT}/etc/portage/savedconfig/
 * [${CTARGET}|${CHOST}|""]/${CATEGORY}/[${PF}|${P}|${PN}]


grub,參考 https://wiki.centos.org/zh-tw/HowTos/Grub2

使用 BIOS 時,執行 grub-install --target=i386-pc /dev/nvme0n1 安裝 bootloader。使用 EFI 的話,有點小複雜,就先不折騰了。

產生選單前,可以設定 /etc/default/grub,我習慣的設定如下。

# 預設的開機,儲存在 /boot/grub/grubenv 中的 saved_entry
GRUB_DEFAULT=saved
# 顯示全部的開機選項
GRUB_DISABLE_SUBMENU=y
# 不要建立復原開機選項
GRUB_DISABLE_RECOVERY="true"
# Boot with systemd instead of sysvinit (openrc)
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"

其中,GRUB_CMDLINE_LINUX 那一行一定要設,不然使用 lightdm 登入 xfce 後,會不正常。

在 kernel 建好之後,直接下 make install 指令,即可將 kernel 的 image複製到 /boot 下。執行指令 grub-mkconfig -o /boot/grub/grub.cfg,建立開機選單。

注意,假如是把硬碟拔到別的電腦上 install 或 update,一定要在使用的機器上執行此指令,才能建立正確的 grub.cgf,不然會抓到不正確的硬碟資訊,重新開機時,會無法 mount root disk。

執行 awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub/grub.cfg,列出開機時顯示的選單列表。
0 : Gentoo GNU/Linux,採用 Linux 4.9.16-gentoo
1 : Gentoo GNU/Linux,採用 Linux 4.9.16-gentoo.old
2 : Gentoo GNU/Linux,採用 Linux 4.4.52-gentoo.good
3 : Gentoo GNU/Linux,採用 Linux 4.4.52-gentoo
4 : Gentoo GNU/Linux,採用 Linux 4.4.52-gentoo.old

執行 grub-set-default 3,設定預設開機選項為 3。
執行 grub-editenv list,顯示儲存的設定如下
saved_entry=3

假如是升級 kernel,在使用 eselect 設定新的 kernel 後,要重新安裝相關的 package,不然會進不了圖形界面和 VM。

emerge -av x11-drivers/nvidia-drivers app-emulation/vmware-modules

其他安裝

確定可以正常開機後,先裝個基本的圖形介面,emerge -av xorg-server xterm twm,就可以進入 X window。這樣,只需幾個小時,就有視窗可用了,然後再裝其他的 package。

若是已有可用的視窗系統,就不用急,把所有的東西都裝好,再切換過去。

常用小工具

xfce4-notes-plugin
The notes are stored as text files in $XDG_DATA_HOME/notes/ (~/.local/share/notes by default).
The settings are in $XDG_CONFIG_HOME/xfce4 (~/.config/xfce4/xfce4-notes.*).
xfce4-clipman-plugin, 要安裝 x11-themes/gnome-icon-theme, 才會出現圖示

x11-themes/gnome-icon-theme 的 icon,還被一些應用程式使用,如 smb4k 及 krusader 等,不能隨便移除。

Brave browser 的 overlay -- another-brave-overlay

修改 tmpfs 的大小

How to change tmpfs partition size in Linux ( RHEL / CentOS 7 )

原來的 tmpfs 大小,把 RAM 都吃光了,要調小一點。
----------------
檔案系統        容量  已用  可用 已用% 掛載點
/dev/root        98G   28G   66G   30% /
devtmpfs        5.8G     0  5.8G    0% /dev
tmpfs           5.8G  507M  5.3G    9% /dev/shm
tmpfs           5.8G  1.2M  5.8G    1% /run
tmpfs           5.8G     0  5.8G    0% /sys/fs/cgroup
tmpfs           5.8G  140K  5.8G    1% /tmp
/dev/nvme0n1p5  361G   53G  290G   16% /home
none            4.0G     0  4.0G    0% /var/tmp/portage
tmpfs           1.2G   28K  1.2G    1% /run/user/1000
----------------

在 /etc/fstab 加入
tmpfs /tmp tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0

然後下指令
mount -o remount /tmp

LightDM 無法啟動

Create a new file called nvidia.conf in the /etc/modules-load.d directory. It should contain the NVIDIA module name:

FILE /etc/modules-load.d/nvidia.conf
nvidia
nvidia_modeset
nvidia_drm
確保在啟動 lightdm 之前,載入 nvidia_drm 的 kernel module

連接網芳

使用 gvfs,可在 Thunar 使用 "smb://servername/share" 來連接網芳的分享磁碟。

修改 /etc/samba/smb.conf,才能連 Windows 2003 ~ 2019 的網芳,不然會出現 "Failed to mount Windows share" 的訊息

----------------------------------------
  client min protocol=NT1
  client max protocol=SMB3
  ntlm auth = yes
----------------------------------------

在安裝 gnome-base/gvfs,use flag 要加上 fuse (Enables fuse mount points in $HOME/.gvfs for legacy application access)。Gentoo 則是放在 $XDG_RUNTIME_DIR/gvfs 的目錄下,其中 XDG_RUNTIME_DIR=/run/user/1000。

------------------------------------------------
 $ ls /run/user/1000/gvfs
'smb-share:server=10.161.86.149,share=wwwroot'
------------------------------------------------

音效

必須以普通使用者的身份,啟動 pulseaudio.service。控制界面,需安裝 media-sound/pavucontrol (Pulseaudio Volume Control, GTK based mixer for Pulseaudio)。

$ systemctl --user start pulseaudio
$ systemctl --user status pulseaudio

$ systemctl --user enable pulseaudio
Created symlink /home/ajax/.config/systemd/user/default.target.wants/pulseaudio.service → /usr/lib/systemd/user/pulseaudio.service.
Created symlink /home/ajax/.config/systemd/user/sockets.target.wants/pulseaudio.socket → /usr/lib/systemd/user/pulseaudio.socket.
2026-01-23,改用 PipeWire 了。
要完全停用 pulseaudio.socket pulseaudio.service,和啟用 pipewire-pulse.socket , pipewire.service,wireplumber。

無法開機 error: file /boot/intel-uc.img not found

Immediate Fix (Temporary Boot)

  • When the GRUB menu appears, highlight your desired boot entry and press the e key to edit it.
  • Navigate to the line that contains /boot/intel-uc.img or a similar microcode reference. It often looks like "initrd /boot/intel-uc.img /boot/initramfs-...."
  • Delete the part of the line that refers to the missing microcode file, leaving only the reference to your main initramfs file (e.g., initrd /boot/initramfs-5.4-x86_64.img).
  • Press Ctrl+X or F10 to boot with the modified entry. 

Permanent Fix

1. Install or Reinstall the Microcode Package
------
sudo emerge --ask sys-firmware/intel-microcode
 (Ensure the 'initramfs' USE flag is enabled for the package if you want it in a separate image file.)

------
2. Update Your Bootloader Configuration 
---------
sudo grub-mkconfig -o /boot/grub/grub.cfg
---------

VMware-Workstation

gentoo ~ # emerge --config vmware-workstation


Configuring pkg...

Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.12/emerge", line 57, in main
    retval = emerge_main()
             ^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/_emerge/main.py", line 1308, in emerge_main
    return run_action(emerge_config)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/_emerge/actions.py", line 3876, in run_action
    return action_config(
           ^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/_emerge/actions.py", line 758, in action_config
    retval = portage.doebuild(
             ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py", line 1218, in doebuild
    rval = _prepare_env_file(mysettings)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py", line 1686, in _prepare_env_file
    env_extractor.start()
  File "/usr/lib/python3.12/site-packages/_emerge/AsynchronousTask.py", line 34, in start
    self._start()
  File "/usr/lib/python3.12/site-packages/_emerge/BinpkgEnvExtractor.py", line 43, in _start
    env=self.settings.environ(),
        ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/portage/package/ebuild/config.py", line 3378, in environ
    raise AssertionError(
AssertionError: LC_ALL=zh_TW.UTF-8 for posixish locale. It seems that split_LC_ALL was not called for phase config?
gentoo ~ # unset LC_ALL
gentoo ~ # emerge --config vmware-workstation


Configuring pkg...

Network settings database seems to be invalid,configuring default settings
Configuring Bridged network vmnet0
Configuring hostonly network vmnet1, probing for unused subnet ...
Configuring NAT network vmnet8, probing for unused subnet ...
Configured default networks - Bridged, Hostonly, NAT

gentoo ~ # 


V




網誌存檔