2021年12月26日 星期日

幫光固化 3D列印機做個加熱器


作者的 FB https://www.facebook.com/permalink.php?story_fbid=10157191752823680&id=651553679

加高,走電線用 Riser for PTC heater power cord

2月底,10~11 度的低溫的假日,只能躲在家印個 DIY 零件。就把先前買好的加溫零件,拼湊起來使用,拼湊完成的加溫器的相片如下。



Phrozen Sonic Mini: 5.5" 快速光固化列印機,列印體積:L120 x W68 x H130 (mm)

增高框,242 x 281 x 17 (mm),切塊印再結合。

試用,用來烤乾清洗後的機械鍵盤的按鍵。使用 12V/10A 的電源供應器,在第三次使用時,插上電源插頭時 "碰" 一聲,電源供應器的保險絲燒斷了。後來去光華商場買慢熔的保險絲焊上,一插電源仍然燒斷,電源供應器爆了。只好再上網買一個 12V/15A 的電源供應器。



台北的假日天氣又濕又冷,正好在家印 DIY 的零件
把先前買的零件拼裝起來,給列印機做加溫
溫控器: XH-W3002
電源供應器: 12V 15A
PTC 加熱器: 12V 100W,標示電流 12A
原來的電源是 12V 10A,用到第3次,一插電源就爆了,只好乖乖再買一個 15A 的電源。另外把溫控器的延遲時間設成 1分鐘 (最低只能設到一分鐘),避免電源插上的瞬間電流又把電源供應器燒了。
PTC 加熱器原來的接線很長,要把東西塞進 Sonic mini 的空間,組裝有點亂,就把原來的線剪掉重焊。原來有2個加熱元件,只焊接其中一個發熱器,只剩 50W 的功率,加溫會變慢,但對電源供應器比較安全,被燒怕了。Sonic mini 的空間真的很小,要調整拼裝的方式,才能放在殼內,塞進去剛剛好。
先前有買一個電壓範圍很廣的溫控器,但顯示是藍底白字,不能放在機器內。後來再買一個紅色 LED 的溫控器,整個組裝在一起,放在機器內,比較好用。溫控器挑最便宜的,一個台幣一百多。溫度感測器就黏在溫控器的上方,整個比較一體化,只有兩條線拉出來。風扇沒有經過控溫器,在停止加熱後,仍能帶動空氣,讓溫度比較平均。
樹脂的說明只標註低溫,沒有說最高是多少,就把停止加溫設在 28度,啟動加溫設在 26度。這樣加熱器停了後,還會超過 28度,再慢慢降下來。低於 26度又開始加熱,但溫度會再降一些,才又慢慢上升。

網友: 原來如此,我還在奇怪怎麼燒掉一個變壓器

PTC的啟動電流很大,電源的電流容量最好有2倍

2021年12月20日 星期一

解剖 HP 噴墨頭,超摳的墨水容量

對於噴墨印表機,我個人比較喜歡HP噴墨印表機。因為HP噴墨印表機的噴頭跟墨水匣做在一起,換墨水等於換一組全新噴頭,我可以很放心的自己裝填墨水。假如失敗了,頂多再換個墨水匣而已。

不過,買噴墨印表機的價格雖然後便宜,墨水頭卻是超級貴的,而且買印表機送的噴墨頭的墨水量其實是超少的,看看下圖的解部圖,故意把吸墨水的海棉做到只有全容量的1/3 ~ 1/4。因此當然要自己灌墨水才划算。

雖然,廠商的保修單上是有明確規定,印表機需使用原裝墨水 ,若私自添墨導致的問題不予保修。不過,一部新的低價噴墨印表機只比噴墨頭的貴不了多少,所以有興趣的人,還是可以試一試的。


灌墨水的道具如下。

早期的墨水匣還稍有良心一些,海棉是塞滿整個黑水匣。


也許別的牌子的噴墨印表機,也可以這麼做,但我不太有實驗精神,一則也不想多花錢買別的印表機來試驗,不想和自己的荷包過不去,所以沒試過其他廠牌的印表機要自行填充墨水是否一樣方便。


雖然,自開始以來,HP噴墨印表機的噴頭跟墨水匣做在一起,但是內部結構並不一樣。以前要自行填充墨水,是有點難度的,不小心就弄得兩手髒兮兮的,而且,還要有點技巧,例如,灌了墨水之後,還要排掉空氣,不然會印不出來。


不過,現在的墨水匣,要自行填充墨水,保證比護士打針還容易。我自己只有在第一次接觸這種新的墨水匣時失敗過,因為把針頭插的太深,把噴頭部份弄壞了,因此報銷一個頭。後來,發揮破壞的精神,鉗子加刀子,把墨水匣給剖開來。瞭解墨盒子裡面長得怎麼樣,當然,再也不會失敗啦!其實,還是曾失敗啦,不過那是那是其他問題,使印表機印不出來,害我拼命灌墨水,直到墨水從噴頭滴出來,還是印不出來,最後把那個墨水匣丟了,也損失滿滿一灌的墨水。


相片中是解剖開的墨水匣,應該很清楚了,不用多加解釋,若是不清楚,自己拆一個來看,就會更清楚了。只是,填充墨水不太好買,一些大賣場都有默契,不賣填充墨水。因為做生意,講究的是利潤,沒必要放著好賺的錢不賺,況且,使用填充墨水,又會帶來失去保固的糾紛。想要使用填充墨水的人,就得自行負擔失去保固風險囉。


除了沒有保固之外,也可能噴嘴堵塞摻了雜質,造成噴嘴堵塞,拖慢供墨的速度,品質粗劣。此外,倘若只是做一般黑白文字列印都還好,若是要印相片,品質還是有差的。還有,非原廠墨水穩定性也可能不及原廠墨水。


總歸一句,用填充墨水,可能會有許多問題,在此,只是把墨水匣剖開來,供大家參考,要怎麼做,就自行決定囉。

後記

這篇文章其實是2008年整理在 Yahoo 部落格的,後來 Yahoo 部落格整個死掉,移轉到 HiNet 的隨意窩,最近因為拆墨水匣,又把這篇文章找出來,重貼在此,只是想要爆一下摳到爆的墨水匣。



2021年12月12日 星期日

三洋洗衣機 U3/U4 錯誤處理

 原先使用的洗衣機已超過十年,趁三洋福利品拍賣會再買一台新的洗衣機。新的洗衣機送來,舊的就請送貨員帶走。

買來立刻試洗,順利的洗好。但看到水平指示偏一邊,想把它調成中間,然後就無法成功的洗衣服了。開始是出現 U3 (衣服沒擺平) 的訊息,後來就變成一直出現 U4 (蓋子未蓋好) 的訊息。試了幾次之後,已是半夜 12點多,不好意思再試下去,只好把濕的衣服晾起來。

後來又只好把水平調成原來的前面低一點,洗了幾次,到脫水時就會出現 U3 的錯誤,不再有 U4 的錯誤。把脫水的衣服減少,分次脫,勉強可以成功脫水。

偵測上蓋開啟的磁簧開關,藏在 "開始" 按鍵的外殼下方,用磁鐵吸住仍會出現 "U4" 錯誤,顯示這個沒有問題。

Google 查詢 U4的相關資訊,知道洗衣槽後方有一支偵測洗衣槽晃動的白色塑膠桿,也會造成 "U4" 的錯誤訊息。試著撥那根桿子,仍無效。判斷應是後面偵測洗衣槽晃動的偵測器的問題,而且很有可能開關接觸不良,導致才按開始明明沒在動卻一直顯示 "U4" 的錯誤訊息。

後來有天洗衣服仍是到脫水就出現錯誤,停在 U3的訊息。把衣服擺好,再次脫水,就又一直死在 U4的訊息。用強力磁鐵去吸在前方下方的蓋子偵測磁簧開關,仍是持續出錯,真是讓人無限挫折。

分析狀況,確認洗衣機功能正常,就是那個偵測有問題,實在很不想找原廠來修。就看能不能拆開,看看能不能把那個偵測桿廢掉算了。

從上面看後面背板,有兩顆螺絲,沒有看到 "破壞不保固" 的封條,那就拆吧。


那兩顆螺絲 (自攻螺絲) 拆下,上蓋無法打開。只好爬到洗衣機後面拆背板,背板拆開,只有洗衣槽,所以拆背板是多餘的。倒是看到入水口的上方有一顆螺絲 (機械牙),拆下後上蓋就可以輕鬆打開了。


拆開後如下


左方的黑盒子拆下,就可以看到偵測開關的方形白色上蓋

拆掉4顆螺絲後,取出開關
不裝開關的情況下,可以順利脫水。是很想直接把開關廢了,但又怕每次脫水就轟隆轟隆的響,還是看看能不能調一下。

接頭不要硬拔,接頭的上端有一個凸起,押一下就可以輕鬆拔出。



把開關的蓋子打開,是簡單的兩支銅片,接觸點是焊在銅片上互相垂直的銅線。移動偵測桿,會把銅片撐開。



一直出現 U4 的錯誤,懷疑是接點接觸不良,用接點清潔劑噴一噴清潔一下。另外也把銅片角度調一下,讓桿子移動大一點才會讓接點斷開。

全部重新裝回去,試著脫水功能,可以正常運作。但真正有放衣服會如何,只好下次再試。還好要拆開很容易,若真不行,就加個短路開關,有人顧的時候就跳過偵測器。

幾天之後再次洗衣服,終於順利全程洗好。

2021年11月29日 星期一

光固化 3D列印問題處理


最近買了 Onyx Rigid Pro410,試印結果失敗,機器是 Sonic Mini,在 FP 請教前輩要怎麼調整,摘要整理如下。

第1圖,印完後,只剩3個還在,還有一個留一半


但如第2、3圖,底部有一半脫離


第4圖是要印的圖形,高度約25mm


第5圖是列印參數


網友回答如下
  • 曝光時間加長,抬升速度減慢
  • 曝光時間起碼4倍吧!底層2倍。不用害怕拉長時間變太大,他的形態控制很好。話說黑成這樣後固會受限,在成形的時候給比較多固化時間比較有利。
  • 曝光時間1.8改成7
  • 滅燈延時先改成15秒,底層不用改,先印一個小東西試試

列印參數設定可以參考 Phrozen Resin Profile

針對我買的幾種 Phrozen 樹脂的設定參數。


Water-Washable Resin

- Model Gray

ABS-like Resin -

Gray / White

ONYX Rigid

Pro 410

Basic Info

Layer Height

層高度 (mm)

0.05

0.05

0.05

Retract Speed

回程速度 (mm/min)

150

150

150

Bottom Layers 

底層

Layer Count

底層數

6

6

6

Exposure Time

曝光時間 (s)

25 - 35

25 - 35

35 - 40

Lifting Distance

抬升距離 (mm)

6

6

6

Lifting Speed

抬升速度

(mm/min)

60

60

60

Light-off Delay

滅燈延時 (s)

10

10

15

Transition Layers

Layer Count

6

6

6

Normal Layers

Exposure Time

曝光時間 (s)

2.0 - 2.5

2.0 - 2.5

7.0 - 11.0

Lifting Distance

抬升距離 (mm)

6

6

6

Lifting Speed

抬升速度

(mm/min)

60

60

60

Light-off Delay

滅燈延時 (s)

10

10

15

調整 lifting distance, lifting speed, and retract speed 之後, 必須使用計算程式計算滅燈延時確保延時夠多,濃稠的樹脂滅燈延時要多一點喔,一般來說都是加 2~3,Onyx 加 4~5 比較好。

滅燈延時太短可能會造成列印失敗,滅燈延時較長則會花費較長的列印時間。

後來列印成功時所設的參數

列印出來的成品



FB網友對於材料的分享

  • TR300超硬,不能鑽孔,會破碎。
  • 耀石黑,可以攻牙,反過來缺點就是在可動件上面,一下就磨掉了,而且還會起疹子。
  • Onyx Rigid Pro410,更軟有彈性,但是一樣不能凹會斷。官方說法,我們通常會拿來印較堅固可靠的模型,像是架子/ 掛勾等等。


2021年11月15日 星期一

在 Wine 下安裝 Autodesk Meshmixer

動機

因為 Vmware-workstation 升級之後,無法啟動 3D 加速,只好降級。假若能在 Wine 的環境下執行,就不用啟動 vmware。就來測測看吧。

執行環境

  • Gentoo
  • wine-staging-6.21
  • wine-mono-6.40
  • wine-gecko-2.47.2

安裝與執行

意外的簡單,經由下列步驟即可成功執行

## 建立 64位元的執行環境,選擇 Windows 10
WINEARCH=win64 WINEPREFIX=~/wine-autodesk winecfg
## 設定執行的環境變數
export WINEPREFIX=~/wine-autodesk
## 下載安裝檔,把它放到 ~/wine-meshmixer/drive_c 的目錄下,再執行安裝
wine c:\\Autodesk_Meshmixer_v3p5_Win64.exe
## 啟動應用程式
wine "C:\\Program Files\\Autodesk\\Meshmixer\\meshmixer.exe" 

其實安裝後會在桌面建立捷徑,可以直接點選執行,如下

env WINEPREFIX="/home/ajax/wine-autodesk" wine C:\\Program\ Files\\Autodesk\\Meshmixer\\meshmixer.exe 

可以執行了,但不會使用,再慢慢學吧。

再來試試 123D Design,已不再出新版的了,最後一版是 123D_Design_R2.2_WIN64_2.2.14.exe,仍可在網路上找到。

下載後,安裝

export WINEPREFIX=~/wine-autodesk
wine c:\\123D_Design_R2.2_WIN64_2.2.14.exe

其實安裝後會在桌面建立捷徑,可以直接點選執行,如下

env WINEPREFIX="/home/ajax/wine-autodesk" wine C:\\users\\Public\\Desktop\\123D\ Design.lnk 


2021年11月9日 星期二

新玩具 - 3D 印表機

參考連結: Mister Ngan 的網頁

在為機械鍵盤加裝 Trackpoint 模組時,有一些小零件必需要用翻模及削磨來做,做出來的成品總是很不理想。

幫最近買的新玩具打卡做紀念,FDM 和 光固化 3D印表機

先買最普遍的 FDM機器,要印的東西實在太小,完全失敗(照片中的綠色成品,紅色是原來的物件)

立刻再買一台 光固化機器,印出來的成品很精細(灰色成品)。請注意,不是精準,它的材質很容易變型,而且不好搞。目前比較喜歡玩光固化機器。


XYZprinting - da vinci mini w+3d列印機

  • 層厚設定: 0.100 - 0.400 mm
  • 列印尺寸: 150 x 150 x 150 mm
  • 列印速度: 120 mm/s
  • 適用材料: PLA / 抗菌PLA / PETG / Tough PLA
  • 線材直徑: 1.75 mm
  • 噴頭直徑: 0.4 mm
  • Z 定位精準度 Z : 0.001 mm
  • XY 定位精準度 X/Y: 0.0125 mm


中古 Phrozen Sonic mini
  • 技術: LCD光固化
  • 光源: 405nm ParaLED Matrix2.0
  • XY解析度: 0.0625mm
  • 列印尺寸: 120 x 68 x 130 mm
  • 建議層厚: 0.01 - 0.30 mm
  • 列印速度: 80 mm/hr



Phrozen Sonic Mini

赤兔切片軟體

第一次印表機選 default,切出來的檔案是 .stl,列印時,出現 Memory Error: M_400,印表機停在 1%,一動也不動。

查網路說可能是 USB 壞了,找一個,重新 Format,還是不行。

再把手冊讀一次,說要在設定選印表機 Phrozen Sonic Mini。照著做,就產生出 .phz 的檔,檔案 超過 1.6 MB,而 .stl 只有 3KB。再列印就可以正常開始了。

列印成品比較,下圖中紅色原來為 Trackpoint 的帽座,灰色為光固化成品,綠色為 FDM 成品。FDM 成品完全沒有細節。



下圖為下端要套上 Trackpoint 力量感測桿的座,黑色為原廠的座,灰色為光固化產品,因為使用軟體 XYZ 3D maker 的精度只到 0.1mm,成品套上桿子感覺略鬆,堪用。綠色為 FDM 成品,完全無法使用。




有了3D印表機,可以玩的東西又變好多好多。像淘寶買的垃圾鍵盤,功能正常,獨缺電池蓋,就可以想辦法印一個。印好後,二次固化失敗,一折就斷。因為沒樣本,自己測量畫圖,畫的不正確,成品也裝不進去。


各有不同的特性,很來又買了一台 Ender 3 MAX 的二手 FDM 列印機。

然後又看人家說 corexy 的機器比較好,又到淘寶買了一台,人民幣 1,899,大約台幣 8,837,重 15KG,運費就要台幣 728。

2021年11月4日 星期四

建立 USB 開機的 Win 10

 參考 https://www.kocpc.com.tw/archives/96445

使用

部署Windows 10系統到USB裝置前的準備動作:

  • 「命令提示字元(系統管理員)」
  • 輸入「diskpart」文字後按下〔Enter〕鍵
  • 輸入List Disk來查看目前的磁碟機設備狀況,主要是確定要安裝USB的裝置是哪一個編號
  • Select Disk 1    ← 選擇要安裝的磁碟編號
  • Clean                ←清除磁碟內的資料
  • Create Partition Primary         ← 建立新的磁碟區
  • Format FS=NTFS Quick          ←NTFS格式化新的磁區,使用快速格式化。
  • Assign               ← 指定USB裝置的磁碟機代號
  • 確定已經掛載了磁碟機後,接著要將磁區設定為使用中,請輸入「active」並按下〔Enter〕。
  • 此時會出現磁碟分割為使用中,最後就可以離開Diskpart公用程式,請輸入「exit」 並按〔Enter〕。

掛載 win10 iso

c: system, d: cdrom, e: usb disk

接下來再次進入「命令提示字元」視窗,請輸入

「dism /apply-image /imagefile:D:\sources\install.wim /index:1 /applydir:E:\」

文字,在按〔Enter〕鍵前還是確定一下自己的環境,如我的範例:C為我的Windows 10系統碟、E 為要安裝Windows To Go的USB行動硬碟(或隨身碟)、D 則是利用掛接ISO產生的虛擬光碟機。所以就是要將D虛擬光碟機上的isntall.wim映像檔部署到E碟的USB行動硬碟或隨身碟。

DISM 是 Deployment Imaging Servicing and Management 的縮寫,是Windows 7中的映像部署和管理工具,與之前的ImageX相似,而功能更加強大,總之,你把它想像成維修與管理Windows映像檔的管理工具就對了。

將install.wim佈署到USB的D碟上,最後剩下BCDboot來將建立開機項目的設定資料 (BCD) 存放區,而此開機項目讓您可以開機進入已安裝的Windows 映像區。假如你是使Windwos 7來佈署的話,請輸入「bcdboot.exe #:\windows /s #:」(#為磁碟機代號)

bcdboot.exe E:\windows /s E: /f ALL

為什麼要在Windows 8/10的環境下執行呢?因為Windows 8/10內的BCDboot版本才支援BIOS與UEFI兩種韌體,只要在Windows 8/10的命令視窗內輸入「bcdboot /?」即可一目了然。

終於來到結果測試的步驟了,想要測試剛剛製作的Windows 10 USB行動硬碟是否可以開機進入,所以到一台PC上,將剛剛製作的Windows To Go的USB行動硬碟插入機器的USB孔上(建議使用主機板上的USB孔),接著進入電腦BIOS內調整開機順序的設定,每個電腦的BIOS設定都有些差異,下圖是我測試機器的BIOS設定的畫面,重點是將USB硬碟或隨身碟調成開機時的第一個啟動裝置。


2021年9月22日 星期三

CentOS 6 安裝

 2020年底,CentOS 就完全宣告生命週期終止,連更新安裝都沒辦法了。2021年9月,使用者說他必須裝 6.9 才能跑所需的軟體,只好再來努力的裝。

硬體資訊

網卡及顯卡為
Ethernet controller: Intel Corporation Ethernet Connection (11) I219-LM
Ethernet controller: Intel Corporation Ethernet Controller I225-LM (rev 02)
VGA compatible controller: Intel Corporation CometLake-S GT2 [UHD Graphics 630] (rev 05)

開機磁碟為 m2 SSD。

依據 Intel 的說明,Intel Gigabit 網路連線有三個 Linux* 基礎驅動程式:

  • igb-x.x.x.tar.gz 驅動程式:支援所有 82575/6、82580、I350、I354 和 I210/I211 型的 gigabit 網路連線。
  • e1000e-x.x.x.x.tar.gz 驅動程式:支援 Intel® PRO/1000 PCI-E (82563/6/7、82571/2/3/4/7/8/9 或 82583) I217/I218/I219 型的 gigabit 網路介面卡。
  • e1000-x.x.x.tar.gz 驅動程式:支援 Intel® PRO/1000 PCI 和 PCI-X 系列的 gigabit 網路連線。

其中 I225 ,Intel 只提供 Win 64 的 driver,Linux 由 kernel 提供,模組名稱為 igc。

安裝經過

使用者僅說要裝 CentOS,但未指定要安那個版本,考慮 CentOS 8 很快就不再維護了,最先裝 CentOS 7。CentOS 7 裝好後,只有 I225 的網卡會動,不過重開機後又不動了,必需把網路線拔掉再重插,即可連上網路。I219 則完全不動,載入 e1000e 的 driver 也偵測不到網卡。只好改裝 CentOS 8,裝好後,兩個網卡都可正常運作。

不過使用者拿回去後,過了幾天就說要改裝 CentOS 6.9 才行,只好經歷重重難關來安裝 CentOS 6.9。

安裝 CentOS 6.9

在官網上說,自 CentOS 6.5 以後,就可以用 USB 隨身碟安裝。但試了用 dd 寫入 USB disk 或用 Rufus 寫都無法成功開機。注意,用 Rufus 將 ISO 檔寫入隨身碟時,要選 ISO 模式。更慘的是,先前可以用光碟片安裝,這次連安裝光碟片都無法開機,只好想其他辦法安裝。最後決定在 VM 中先裝好,再想辦法複製過去。

不敢執行更新,但也無法執行 yum install xxxx ,必須要修改 /etc/yum.repos.d/CentOS-Base.repo 的設定,指向  vault.centos.org,用下列指令一次搞定。

sed -i -e 's/^mirrorlist/#mirrorlist/g' -e 's/^#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\//baseurl=http:\/\/vault.centos.org\/6.10\//g' /etc/yum.repos.d/CentOS-Base.repo

再重新執行安裝。

槮器太新,連 CentOS 都無法正常啟動網路,一定要裝 Intel 的驅動程式,要先裝 devel-tool。

因為要裝最新的網卡驅動程式,必須安裝新版的 gcc。

因授權問題,網卡驅動程式必須手動下載。

使用 cpio 複製系統,用 USB 隨身碟,速度很慢很慢 ...

複製系統磁區
mount /dev/sdd1 /mnt/src
mount /dev/nvme0n1p1 /mnt/dst
cd /mnt/src
find ./ -xdev -print0 | cpio -pa0V /mnt/dst
cd /mnt
umount /mnt/src
umount /mnt/dst

mount /dev/sdd2 /mnt/src
mount /dev/nvme0n1p2 /mnt/dst
cd /mnt/src
find ./ -xdev -print0 | cpio -pa0V /mnt/dst
cd /mnt
umount /mnt/src
umount /mnt/dst

使用 chroot 進入目標磁碟,建立 grub 

mkdir /mnt/sysimage
mount /dev/nvme0n1p2 /mnt/sysimage
mount /dev/nvme0n1p1 /mnt/sysimage/boot
mount --bind /proc /mnt/sysimage/proc
mount --bind /dev /mnt/sysimage/dev
mount --bind /sys /mnt/sysimage/sys
chroot /mnt/sysimage
source /etc/profile
export PS1="(chroot) ${PS1}"

#######
# 進入 chroot 後,安裝 grub
#######
grub-install --target=i386-pc /dev/nvme0n1
grub-mkconfig -o /boot/grub/grub.cfg

### 記得修改 /etc/fstab ###

最前面要留約 2MB 的空間,建立 grub boot 資料,不然會出現像下面的錯誤。 可以先建一個 2MB 的分割區,等全部分割區都建好後,再把最前面的分割區刪除。

# grub-install --target=i386-pc /dev/nvme0n1
Installing for i386-pc platform.
grub-install: warning: your embedding area is unusually small.  core.img won't fit in it..
grub-install: warning: 不可能內嵌。GRUB 在本設置中僅能藉由區塊清單來安裝。然而,使用區塊清單不僅「不可靠」甚至令人挫折。.
grub-install:錯誤: 不會繼續處理區塊清單.

CentOS 6.9 使用 GRUB 0.97,系統裝在 nvme SSD,開機時會出現下面的錯誤。

----------------------------
grub
Probing devices to guess BIOS drives. This may take a long time.

    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub> find /boot/grub/stage1
find /boot/grub/stage1

Error 15: File not found
---------------------------------------------
所以 CentOS 6.9 不支援 nvme SSD開機。但是 CentOS 7 可以開機,因此將 GRUB 升級至 2.0 版。試著下載不同版本來測試,可安裝的最高版本是 2.02。

到 http://ftp.gnu.org/gnu/grub/ 下載 grub-2.02。要先安裝 bison 才能編譯。
yum install bison
wget http://ftp.gnu.org/gnu/grub/grub-2.02.tar.gz
tar xvfz grub-2.02.tar.gz
cd grub-2.02
./configure
make -j4
make install


  • yum install gcc gcc-c++
  • yum install svn texinfo-tex flex zip libgcc.i686 glibc-devel.i686
  • svn ls svn://gcc.gnu.org/svn/gcc/tags | grep gcc | grep release
  • cd ~/cent6-install
  • svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_5_release/   (這個會花很多時間)
  • cd gcc_4_8_5_release/
  • ./contrib/download_prerequisites
  • cd ..
  • mkdir gcc_4_8_5_build/
  • cd gcc_4_8_5_build/
  • ../gcc_4_8_5_release/configure --prefix=/usr/local/gcc-4.8.5 --enable-languages=c,c++ 
  • make -j6,約 40分鐘
  • sudo make install
  • echo "/usr/local/lib64" > gcc-4.8.5.conf
  • sudo mv gcc-4.8.5.conf /etc/ld.so.conf.d/
  • sudo ldconfig,會出錯,不管它 --  ldconfig: /usr/local/gcc-4.8.5/lib64/libstdc++.so.6.0.19-gdb.py 不是一個 ELF 檔 - 其開頭的魔術位元組是錯的。

libgcc.i686 和 glibc-devel.i686 => 要同時安裝 32 和 64 的版本

------------------------------------------------
svn ls svn://gcc.gnu.org/svn/gcc/tags | grep gcc | grep release
.....
gcc_4_8_3_release/
gcc_4_8_4_release/
gcc_4_8_5_release/
gcc_4_9_0_release/
gcc_4_9_1_release/
.....

sudo vi /etc/profile.d/gcc_485_env.sh
PATH=/usr/local/gcc-4.8.5/bin:$PATH
source /etc/profile.d/gcc_485_env.sh
gcc --version
gcc (GCC) 4.8.5
-------------------------------------------

參考 CentOS 7,安裝 gcc-4.8.5 及 grub-2.0.2
預設是 enable multilib,不管它
--prefix=/usr/local/gcc-4.8.5
           新版本最終安裝的目錄,不然會裝到 /usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.8.5

-----------------------------------------
下載 kernel-devel-2.6.32-696.el6.x86_64.rpm
sudo yum install kernel-devel-2.6.32-696.el6.x86_64.rpm 

tar xvfz e1000e-3.8.4.tar.gz
cd e1000e-3.8.4/src/
make
common.mk:85: *** Kernel header files not in any of the expected locations.
(要先裝 kernel header,不然會出錯)

/home/ntu/cent6-install/e1000e-3.8.4/src/netdev.c:7788:57: 錯誤:「dev」 undeclared (first use in this function)
  struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev));
修正 netdev.c
make 成功

sudo make install
----------------------------------------------------

https://sourceforge.net/p/e1000/bugs/656/
編譯 e1000e 3.8.4,netdev.c 有一行程式要改
原來
struct net_device netdev = pci_get_drvdata(to_pci_dev(dev));

修改成

struct net_device netdev = pci_get_drvdata(pdev);

------------------------------------
tar xvfz grub-2.02.tar.gz
cd grub-2.02
./configure
 ==> configure: error: bison is not found,sudo yum install bison
make
sudo -i  => 切換到 管理者,不然 make install 會失敗
make install
-------------------------------------------


編譯 grub 的問題,要使用自己定義的 alignof,不能使用 gcc 的 stdalign.h 的定義
#define alignof(type) offsetof (struct { char c; type x; }, x)

到 kernel 5 之後,才支援 I225



sh -c 'yes "" | make oldconfig'

sudo yum install ncurses-devel openssl-devel

Avoid speculative indirect branches in kernel (RETPOLINE) ==> OFF

 https://www.kernel.org/doc/html/latest/process/changes.html
幾乎不可能,還是放棄吧

使用 USB 磁碟安裝

新機器很強,考慮直接在新機器用 USB 磁碟開機,再用 Vmware 的 VM 安裝 CentOS 6.9。USB 磁碟使用 240GB 的 SSD 就很足夠了,裝的是 Ubuntu 18。BIOS 的 CSM 要設成 Legacy,VTx 的 VM支援功能要 enable。然後就可以在新機器上直接進行上述的動作了。

另外,USB 上的 OS 要裝 ssh, xrdp, build-essential,其中 xrdp 可以透過 remote desk 來遠端操作。Ubuntu 要另外安裝 ssh 才能啟動 sshd 服務。Vmare 則需要 gcc 用來安裝 kernel module。

遠端 SSH 連線

無法連線,要加參數才行
ajax@aj-i9 ~ $ ssh ntu@10.161.91.142
Unable to negotiate with 10.161.91.142 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
ajax@aj-i9 ~ $ ssh  -o HostKeyAlgorithms\ ssh-rsa  ntu@10.161.91.142
The authenticity of host '10.161.91.142 (10.161.91.142)' can't be established.
RSA key fingerprint is SHA256:3VMP62P2ny4P0tOWMjXPGMOWBDhAbzb+pP91J0kcAm4.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.161.91.142' (RSA) to the list of known hosts.
ntu@10.161.91.142's password: 
Last login: Tue Jul  5 16:37:45 2022 from 10.161.91.142
[ntu@localhost ~]$




2021年9月10日 星期五

使用 PHP 控制檔案下載

使用 PHP 控制檔案下載

Windows 需要修改 php.ini,將 extension=php_fileinfo.dll 的註記拿掉

程式碼如下

// 檢查身分
if (檢查身分不通過) {
    echo "非合法使用者";
     exit;
}

$up_dir = "D:\upload_files\sel_petition";
$pdf_fname = $up_dir.'/'. Util::gen_up_fname($ser_no);
// echo "$pdf_fname<br>";
if (file_exists($pdf_fname)) {
    $mtype = mime_content_type($pdf_fname);
    // echo "Content-type: {$mtype} <br>\n"; exit;
    ob_clean();
    header("Content-type: {$mtype}");
    echo file_get_contents($pdf_fname);
}

ASP 的版本 How to download the files using vbscript in classic asp


2021年8月5日 星期四

DIY -- Filco 機械鍵盤加裝 Trackpoint 小紅點 (指點桿)

Filco Mechanic Keyboard with Trackpoint

先來一張完成照,土砲 DIY,無法顧及美醜,實用至上。固定滑鼠按鍵是用 PVC 線槽切割而成,保留灰灰的本色。雙色鍵帽是淘寶買的,有注音及倉頡輸入。

Filco 的鍵盤算是好改的,PCB 單純,只要移 3個二極體,固定好 Trackpoint 後,電路只要再加一個 PS2-to-USB converter 就搞定。


緣起

最先是在 Ducky 的機械鍵盤上加裝小紅點,用了快雨年,靜極思動,又想找點事情做。聽說機械鍵盤的終極是 Filco,俗稱大 F。就開始留心價格和那裡可以買,87鍵的台灣大都掛缺貨,淘寶有現貨在賣。可是要幾千元的東西要買大陸的東西,實在沒信心。另外,價格也實在很亂,中古用了 5年的也還可以賣 2千 ~ 3千。後來在 FB 社團有人賣一個近全新的 87鍵茶軸,3千元,立刻聯絡,一個鐘頭後就去帶回家了。

有東西在手,比較有實際的概念,可以依外觀研究加裝小紅點的可行性及難易,在搜尋如何拆解鍵盤時也較能瞭解說明的內容。要拆解鍵盤只要鬆掉一顆螺絲即可打開外蓋,但那顆螺絲就在保護貼下面。這個鍵盤離購買日期不滿一個月,若拆開就失去保固,實在有點可惜。

另外,也確定了可以直接當 PS2 鍵盤使用,而且 PS2-to-USB converter 可以正常運作。這樣在改裝時,就可以少一個 USB HUB,省事多了,所需空間也可以小一點。

終究我是要拆的,DIY 的過程會破壞什麼東西一切都是未知,想到有人在玩剪線鍵盤,就 Google 一下看看別人怎麼玩的。最後決定買剪線鍵盤來玩,可以放開手來改,不會心疼。第一次先買兩把 87鍵鍵盤,茶軸 (一代) 和紅軸 (二代)。收到後先拆二代的紅軸,接上線功能正常,就開始研究如何改裝,同時把新鍵盤上網拍賣,儘快賣給有緣人,不要浪費有限的保固期。

鍵盤矩陣

照例改裝前先留一張鍵盤矩陣圖,以防切斷一些線路無法復原。旁邊的數字是控制電路的Pin腳編號。

在 trace 電路過程,見識了日本人的堅持。聽說一代鍵盤使用 SMD二極體,二代改成傳統元件,而且所有的二極體都和按鍵焊在同一面,因此底面只有一個 5pin的臥貼焊接接頭。銅箔儘可能不穿越另一面,因此會看到很靠近的兩點,中間的銅箔繞了好遠好遠。

因為它在佈線上的堅持,改裝時只破壞了一條銅箔,移動三個二極體。上次改 iKBC 鍵盤時,鑽一個洞鑽斷背面的4條銅箔,而且不是靠鍵盤矩陣能復原的,不得已另外買一個全新的來測試才復原。

鍵盤控制電路在獨立的一塊小板子上,我買了好幾個鍵盤,有問題時,可以把控制板互換做交叉測試確定問題。


上面這塊是 Filco 迷彩版 (Majestouch-2 Camouflage-R) 的電路板,多了四顆固定螺絲,和固定鐵板互鎖。但這支也是我買的鍵盤中最新的版本,不確定以後的版本是否都有這幾顆螺絲。 

電路板清楚標示 USB 信號名稱,改裝時不用一直對照確認信號。FILCO 的鍵盤可以支援 PS2界面。

USB -- PS2 的信號對應  ==> D- -- Data,D+ -- Clock。

改裝

買過完整包裝 Filco 鍵盤的好處就是,知道它可以藉由一個簡單的轉換頭同時支援 PS2 協定。在改裝時,只要一個 PS2 to USB 的 converter 就可以搞定同時轉換 keyboard 和 mouse 的信號,不用在鍵盤裡再藏一個 USB HUB 來整合鍵盤和小紅點的信號,整個架構變得簡單多了。


連接方塊圖。小紅點模組的 Reset 信號很重要,漏接的話,通常不能正常運作。


找到的小紅點模組可以把力量感測器拆開,用 FPC 連接,FPC 可以折彎,方便把模組的電路板固定在適當的位置。鍵盤外殼只要磨掉一些加強的凸肋即可組裝,完全不用破壞鍵盤外殼,算是相當理想。

模組電路板的接頭間距只有 1mm ,勉強能夠焊接電線。原本想用電線和排線接頭來連接,可是一不小心電線就把焊接的銅箔帶起來,模組無法再焊線,也就報廢了,還真心疼。後來還是選擇使用 FPC 來連接,比較無法任意折彎,轉換板也很大,但還好塞得下。

鍵盤的外形前低後高,後面的空間比較大,把電路板都集中在後方,用雙面膠固定在避開凸肋的位置。力量感測器的固定板是用 1mm 厚的金屬板裁切而成,先鑽 1.6mm 的孔,再用 2mm 絲攻攻出螺紋。固定板用出遊時偶遇買的奈米膠固定,還蠻牢的。這奈米膠不耐高溫,要拆時可以泡熱水,或用熱風機吹就會軟化。使用時,奈米膠很容易就黏住手指,切記不要用力拔開,可用溫熱水慢慢把它軟化搓開。

為了固定力量感測器,影響到三個二極體,以及切斷一條銅箔,影響的範圍不大,用新的 IN4148 補焊上,以及加上跳線,鍵盤功能即恢復正常。

既然是剪線鍵盤,原來的連接線早就被剪了,必需另外做連接線,那就做個 Type-C 的接頭吧,可以用標準的 Type-C 連接線。接頭是在淘寶找到的 4-pin Type-C 接頭,不算標準的 Type-C 接頭,但使用的 PS2-USB converter 只是 USB 1.1 HID 協定,只要4條線就夠了。把原來過連接線的孔挖一挖,剛好用來固定接頭,外觀看起來還 OK。

總結

這把鍵盤改好後,也用了好一陣子,直到後來改了 68鍵的鍵盤。

網誌存檔