翻舊帳

2024年10月8日 星期二

Switch JOY CON 維修數則

最初的紅藍 JOY CON, 使用了四年後, R 鍵不太靈光, SL/SR 以及藍芽配對鈕無反應.
看了 Youtube 的影片, 決定自己維修. 以下是維修紀錄.

  1. JOY CON (R) SL/SR 藍芽配對鈕: 拆開看可以看到排線斷裂, 所以就是買一條新的排線更換. 台幣 25 元. 更換後依照 Youtube 的建議, 把排線折到電池下方的空隙, 避免再度被外殼壓斷.

  2. JOY CON (L) SL/SR: 雖然目前沒事, 但一樣的施工方式很有機會有同樣的狀況, 所以順便買了一條左手的排線, 一併更換. 台幣 25 元. 一樣, 更換後把排線折到下方空隙藏好.

  3. JOY CON (L) L: 更換排線後 OK, 台幣 25 元.

  4. JOY CON (R) R: 這顆按鍵最麻煩, 它是焊在主板上的, 要更換一定要拿烙鐵或熱風槍解焊. 但我相信我沒有那個技術, 所以就先依照 Youtube 的建議, 在微動開關兩側多加一點焊錫加固.

    第一次施工後, 微動開關不會搖動了, 可是組裝起來, ABXY, 以及 +/HOME 按鍵全部沒有反應, 香菇頭跟藍芽配對鈕倒是正常. 決定重新拆裝一次.

    第二次施工, 重新拆 JOY CON, 仔細清除 R 鍵兩旁多餘的焊錫, 組回的過程中發現按下 ABXY, HOME, +, R, 手把燈號都會閃動, 我想這應該是給組裝人員使用的測試燈號. 完成後, 上主機測試, R 鍵雖然有比之前好一些, 但依舊不是每次都有反應. 決定隔天拿到公司用高檔烙鐵好好處理一下.

    第三次施工, 配合放大鏡, 仔細整理 R 鍵兩旁的焊錫, 確認不會搖動, 確認按鍵行程不會卡卡, 組裝回去, 發現 ABXY, +, HOME 再度沒有反應. 無論我再試幾次都一樣沒有反應.
    我猜是 R 鍵的微動開關異常, hold 住了主板的 decoder, 但我沒有新的微動開關可以確認, 只好拿去外面讓專業的幫忙更換.
    送修三天後, 台南的店家通知我取件, 取件時告知, 被拒修, 沒有告知原因.

    第四次施工
    上網搜尋, 有類似的情況, 也是處理 R 鍵之後發生其他按鍵無反應. [https://www.reddit.com/r/NintendoSwitch/comments/htt9b2/unresponsive_joycon_abxy_buttons/]
    我的猜測是, 原廠的微動開關, 在焊接過程中如果受熱太久, 有可能傷到內部結構, 造成短路. 短路之後不斷送出信號, 導致主板無法接受其他按鍵的 interrupt. 如果它的內部結構如此脆弱, 那一開始不靈敏的問題也很有可能是內部結構變形造成的, 因為我記得我拆開的時候並沒有發現嚴重的搖晃現象.
    拆開後, 拿三用電表量測 R 鍵的電阻值. 它沒有短路, 但是在我按下按鍵後也沒有接通. 確定這顆微動開關真的不正常.
    ABXY 無反應的問題與 R 鍵應該無關. 但 R 鍵確定壞掉了, 接下來可能要送修, 最壞情況可能要下單 R 鍵然後請硬體幫我替換了.

    第五次, 回高雄的時候, 拿去元素科技[https://elements-tech.cc/], 請他們協助更換 R 鍵.
    收件時間星期五晚上九點半, 通知取件是星期六下午三點半, 速度很快.
    取件時老闆告知, 更換 R 鍵後, 工程師一併幫我調整了 ABXY 按鍵無反應的問題. 老闆說原因是卡住! 讓我想起 Youtube 有強調, Joy Con 主板的兩顆螺絲不能鎖太緊, 也許這就是 root cause.
    維修費用台幣 390.

  5. Y 字螺絲滑牙: 這應該算我自己的包. 我一開始拿維修 iPhone 的 Y 字起子(0.8mm)來用就是錯的. Switch 的原廠螺絲是鋁製的, 受力稍微不均就很容易軟掉. 上次維修 Switch 螢幕的時候也有類似的問題, 但我沒想到是我工具不正確. 這次比較慘, 有顆螺絲中間幾乎變成圓形了. 幸好, 購買了正確尺寸的 Y 字起子(1.5mm)後, 那顆滑牙的螺絲順利轉開.

    但我不想再經歷同樣的過程了, 所以這次也訂購了同尺寸的鐵製十字螺絲替換. 台幣 58.

2024年8月20日 星期二

DIY -- Roomba 邊刷螺絲滑牙

更換 iRobot 的六角邊刷, 但這次鎖回去的時候發現鎖不緊.
隔天, 老婆說機器人掃地時邊刷一直掉下來, 連螺絲都被吃掉了.

上網查詢, 不少人遇過類似的狀況.
我選了一個最容易的解決方式: 水電常用的白色止洩帶.

在螺絲上面包纏一段止洩帶後再度鎖上, 試運行, 完美解決.

2024年4月30日 星期二

Linux 的 timezone 設定問題

 昨天遇到一個謎團.

系統開機, 會先以正常的方式同步網路時間:
1. 使用 zoneinfo 的檔案更換 /etc/localtime
2. NTP client sync

接著詢問私網的 server, 獲得特定時區的差, 重新同步一次時間
3. 詢問時間差
4. 把 /etc/localtime 換回 UTC
5. NTP client sync, 另外加上時間差

謎團在於, 系統看到的時間, 與 daemon 裡看到的時間不同步.

舉例, #1 把時區設定為 Asia/Taipei, 做完 #5 之後, 會發現, Linux 系統跟 state machine daemon 的時間會差 8 個小時. Linux 系統使用 date, 會看到時區是 UTC, daemon 裡看到的時區應該是 CST(GMT+8).

很明顯, daemon 在 #4 之後沒有跟著變為 UTC.

如果在 #1, #4 變動 timezone 之後, 使用 setenv("TZ", timezone string, 1) 呢?

1. 使用 zoneinfo 的檔案更換 /etc/localtime, setenv("TZ", timezone string, 1)
2. NTP client sync
3. 詢問時間差
4. 把 /etc/localtime 換回 UTC, setenv("TZ", "UTC", 1)
5. NTP client sync, 另外加上時間差

則會出現另一個問題: daemon 裡看到的時區會回到 UTC, 但 Linux 系統裡面看到的時區則停在 CST(GMT+8). 此時回到 Linux 系統, 使用 "set" command 查詢系統參數, 會看到 TZ='Asia/Taipei'.

也就是說, #4 即使 setenv(), 也僅作用於 deamon, Linux 系統卻沒有跟著變動.
怪異的是, #1 的 setenv(), 則會作用在 Linux 系統. 因為當我把 setenv() 拿掉的時候, Linux 系統中的 TZ, 就都不會存在.

我的猜測是, 系統設定值在每個 process 應該是獨立的? 可是這樣無法說明為什麼 #1 的 setenv() 會波及 Linux 系統.

2024年4月20日 星期六

Toyota Collora Cross Hybrid 油耗紀錄

2024/3/17 牽車

2024/4/20 油耗 21.2KM/L, 市區高速各約佔一半。


2024/5/4 油耗 21.4KM/L



2024/5/14 油耗 21.5KM/L




2024年4月1日 星期一

DIY -- Cross 加裝胎壓顯示器

新一代的車子都取消了備胎, 為了因應這問題, 胎壓偵測就顯得重要了. 在輪胎的氣漏光之前發現問題, 及早處理, 應該能避免動用到備胎.

政府目前的法規有規定, 新車的車胎都要加裝胎壓偵測器, 老婆那台 Swift 就有內建, 而且每隔一段時間, 就會被胎壓過低的嗶嗶聲所困擾, 每次都只能回廠處理. 我到現在還是沒搞懂 Swift 的胎壓要怎麼重置, 它的人機介面真的不友善.

新車 Cross 當然有偵測器, 不過, 和泰把每個輪胎胎壓的解碼顯示器當成選配...我原本打算抝業務送我, 但沒成功. 沒關係, 蝦皮買得到, 店家還提供 DIY 的影片, 我們自己來就好.




星期日一大早, 把車開到路邊, 依樣畫葫蘆. 結果出師不利, 第二顆卡扣卡在鈑金上面沒有跟著車身飾板起來...囧


接下來卡關的, 就是拆下原本的排線. 原廠的排線接頭, 在卡榫上方有一個橫條機構, 讓人很難按下去. 我最後是拿拆手機的塑膠工具協助才拆下來的.




裝好之後還要歸零重置, 很幸運地, 每顆輪胎都在該在的位置上.

搞定.