2024年12月15日 星期日

Racknerd可不可以升級?搬VPS?搬遷的Step by Step (Racknerd 2024 Black Friday 新方案)

 先附上Racknerd 2024 Black Friday 新方案

RAMCPU core空間流量頻寬價格
1   G1核20G1.5T/月1Gbps$10.99/年
2.5G2核40G3.0T/月1Gbps$18.93/年
3   G2核60G5.5T/月1Gbps$27.89/年
4.5G3核100G8.5T/月1Gbps$39.88/年
5   G4核130G12 T/月1Gbps$55.93/年

剛發現走推薦連結有不同的方案

RAMCPU core空間流量頻寬價格
1   G1核24G2T/月na$11.29/年Click
2   G1核40G3.5T/月na$18.29/年Click
3.5G2核65G7T/月na$32.49/年Click
4   G3核105G9T/月na$43.88/年Click
6   G4核140G12 T/月na$59.99/年Click


回到主題,我之前就租了2023 黑五最便宜的方案來玩
後來沒用到,閒置了一段時間
某天公司有個需求,就把一個站搬進去放
也還行,反正就是跑一個網站,最小的vps已經足夠使用

我在公司有另外一個服務,會提供外部一些檔案下載
因為這個服務當初隨手弄的,所以就直接在Windows上開一個VM跑這個服務
服務運作也一年多了
一年多下來,Windows自己強制更新重啟、公司停電、網路斷線
一堆小問題,我一直想著要把服務搬到外面的VPS上

原本想用oracle的永遠免費服務,但看了一些網路上的經驗
永遠免費服務,不知道哪天會不會踩到他的回收機制,vps就直接被回收掉
所以還是乖乖租vps來用

回到racknerd,當初我租的最小的vps
尷尬的是,空間不夠放我現在想要搬遷的這個服務Orz

跟客服確認過幾種選項

  1. 原方案直接加價升級,開ticket請客服幫忙處理
    例如原本是10塊的,用了半年,想升級一個level,例如20塊
    客服的意思是會開一個剩下比例的升級費用
    可能是再付5塊之類的
  2. 直接從A優惠方案,例如2023黑五優惠,升級成2024黑五優惠
    客服說不行,他們的政策是不允許促銷跳躍
  3. 直接買2024黑五優惠,請客服幫忙轉移VPS
    racknerd不提供遷移vps的服務,使用者要自己處理
    客服提供了一個教學,但我看了沒啥用,就不放了
所以最終決定直接以2024黑五優惠租一個新的vps
然後自己處理複製VPS的事情

參考這篇
https://www.voip-info.org/forum/threads/image-copy-backup-and-restore-of-racknerd-vps-hdd.25424/
但這個論壇可能有鎖地區,沒辦法直接看
  1. 登入你的 RackNerd VPS 帳戶,網址為:https://nerdvm.racknerd.com/login.php
  2. 從列表中選擇你的 VPS 伺服器,可以點擊主機名稱或對應的「Manage」按鈕。
  3. 當 VPS 的控制面板顯示後,點擊「VNC」按鈕。
  4. 在 VNC Viewer 頁面,點擊「HTML5 VNC Client SSL」。 (請確保你的網頁瀏覽器允許 nerdvm.racknerd.com 的彈出視窗)。
    或者,你可以從畫面上獲取 IP 位址、訪問端口號及臨時密碼,使用你喜歡的 VNC 客戶端訪問你的機器。請注意,這是主機級別的訪問,使用的 IP 位址和用戶憑據與你在 VPS 內部設置的不同。即使 SSH 訪問受損或不可用,這種方式運作起來就像是在虛擬機器的實體控制台一樣。
  5. 你的網頁瀏覽器將打開一個 HTML5 窗口,與你的 VPS 主控制台建立 SSH 連接。
  6. 使用你的 VPS 主機的 root 資格證登入。
  7. 登入後,執行指令 shutdown -Ph now 來正確關閉你的 VPS。操作完成後,VNC 窗口會顯示伺服器已斷開連接。
  8. 返回網頁瀏覽器的 VNC Viewer 頁面,點擊「Back」,這將帶你回到 VPS 控制面板。
  9. 接著,點擊「Rescue」按鈕,進入新頁面,選擇要用於救援模式的內核。
  10. 使用選擇器中顯示的默認內核,這是你的 VPS 在配置時安裝的主內核。如果你進入救援模式是為了解決系統問題,可以更改內核,但這裡我們進入救援模式只是為了進行備份。點擊「Enable Rescue Mode」,然後在彈出的通知窗口中確認繼續操作。
  11. 此時,你應該能看到 root 的 SSH 連接憑據,包含一個難以猜測的密碼。請注意,IP 位址是你的 VPS 的靜態 IP。
  12. 為了備份你的 VPS 硬碟(整個硬碟的字節對字節映像副本),在你的本地互聯網連接機器上打開終端,並執行以下指令(本地執行,非在 VPS 上):
    ssh root@<你的VPS_IP> dd if=/dev/vda bs=1M oflag=sync | sudo dd of=<備份的完整路徑及檔名> bs=1M oflag=sync status=progress

    注意:如果需要還原備份,執行步驟 #1 到 #11,然後在本地電腦(非在 VPS 上)使用以下指令:
    sudo dd if=<要還原的完整路徑及檔名> bs=1M oflag=sync status=progress | ssh root@<你的VPS_IP> dd of=/dev/vda bs=1M oflag=sync
  13. 當備份或還原操作完成後,退出救援模式,並重新啟動你的 VPS 進入正常運行模式。
以上的步驟可以完整把舊的VPS搬到新的VPS上
需要注意舊的VPS空間要小於新的VPS
如果舊的VPS大於新的VPS,那就很麻煩了...
最後,參考racknerd的教學
https://blog.racknerd.com/how-to-expand-your-linux-vps-root-partition/
在runtime情況下調整partition size
整個搬遷就完成了~

補充:
因為整個硬碟copy,所以還需要修改設定,對應到原來的設定
1. hostname
2. ipaddress
3. hosts

2024年10月29日 星期二

來推薦一下VPS Racknerd

網路上有蠻多這間VPS的推薦,不過大多是賺傭金的
推薦的點不外乎是便宜,然後中國那邊很多拿來當VPN跳板主機
我當初也是無聊租了一台來玩
後來實際上用起來覺得還可以
但是有幾個小地方當初租的時候沒注意到
就來分享一下,順便分享我的推薦連結 XDDD

  • Racknerd有很多優惠方案
    很多會去租Racknerd的就是看在便宜的份上
    但便宜總要花在刀口上
    例如Blackfriday優惠 (常態優惠)
    跟2024新年優惠(一樣是常態優惠)
    兩者的內容就不同,下面簡單列出比較,只列最便宜的方案跟差異的部份
    1. Blackfriday優惠
      1. 768MB KVM VPS
        15GB storage
        1T傳輸量
        10.18 usd/year
      2. 2GB KVM VPS
        30GB storage
        2.5T傳輸量
        16.98 usd/year
    2. 2024新年優惠
      1. 1GB KVM VPS
        21GB storage
        1.5T傳輸量
        11.49 usd/year
      2. 2GB KVM VPS
        35GB storage
        2.5T傳輸量
        17.38 usd/year
我租了768MB的主機,安裝完系統後,再隨便裝點東西
硬碟空間就變得相當有限Q_Q
但現在已經有放了一個網站上去跑,就也不能隨便把系統砍掉重裝一次

Blackfriday優惠跟新年優惠最便宜的方案只差了1.31usd
但記憶體多256M,硬碟多6G,傳輸量多500G
有的方案會有不同地方的資料中心可以挑,但我自己是覺得都沒什麼差
ssh大概都一樣緩慢,畢竟主機在美國
web service影響不大

早知道硬碟會這麼容易滿,我應該要買新年優惠的方案Q_Q

租了VPS之後,他們的IP還蠻容易被狂掃的
所以建議是安裝系統之後,裝一下tailscale或wireguard
設定ufw,擋掉外面的ssh連線,只允許透過tailscale或wireguard連進去
可以大幅度減少ssh被人家撞的風險
也可以充當美國跳板主機,有時候臨時需要換地點,就可以透過自己的主機跳出去


如果心動的話,可以透過我的推薦連結
去racknerd逛逛
直接進入racknerd,各vps方案基本上都沒有什麼優惠
網站上面的優惠碼,固定打85折
(反正他就很努力吸引你掏錢就對了)

真要便宜,還是要參考他的黑色星期五優惠
跟新年優惠

最後,網路上也不乏有人分享這種超低價VPS商可能會有倒閉或是跑路的風險
嘛~ 就不要拿來放太重要的東西或是服務??
我自己目前是放公司網站啦....
老闆沒掏錢,我就只好先拿自己玩的VPS湊合一下XD

2024年4月6日 星期六

Fix msmtp does not work in old ubuntu/debian version

主要是舊版msmtp沒有處理好email header
現在的smtp伺服器會檢查mail header
寄件人跟帳號不一致不給寄
收件人不是合法mail address自然不能寄

#!/bin/bash
# Workaround until mtmsp >= 1.8.8 in Ubuntu 20.10.
root_alias=`grep "^root" /etc/aliases | cut -d: -f 2 | sed "s/\s*//g"`
sed -e "s/From: root (Cron Daemon)/From: <your email address> /" | \
sed -e "s/To: root/To: $root_alias/g" | msmtp $BASH_ARGV


Refer:
1. Sending cron emails to Office365 via msmtp fails
https://www.reddit.com/r/debian/comments/p7xf10/sending_cron_emails_to_office365_via_msmtp_fails/
2.https://serverfault.com/questions/321221/setting-from-header-for-cron-email-using-msmtp

2024年4月4日 星期四

How to LM2596-ADJ limit current

中國有一些降壓的模組,標榜使用LM2596,但是有恆流功能





LM2596本身不提供CC功能,實際上怎麼實現的?
我也有點好奇這點,在網路上查了一下
實際上市透過運算放大器運算電壓、電流
輸出給LM2596的FB pin,進而實現限流的功能


找到一些電路圖跟分析文章,圖片備份,文章附上連結




Refer:
1. LM2596的应用电路
https://www.chip37.com/article/28.html
2. [文章] LM2596-ADJ的开关恒流稳压电路原理详述
https://bbs.elecfans.com/jishu_1119208_1_1.html
3. LM2596稳压器恒流电源电路图设计
http://www.51hei.com/bbs/dpj-155727-1.html


2023年9月19日 星期二

Fix my Orange Pi 3 SBC not able to power up

前幾天拿我的Orange Pi 3出來
取出MicroSD卡,更新Armbian到最新版本
想確認一下Panfrost會導致畫面閃爍/破碎的問題修正了沒
插上MicroSD卡之後開機,還在設定過程中突然斷電關機

重複一兩次都無法正常開機
伴隨著微微的異味
我想可能是有什麼東西燒掉了
用USB Current meter觀察
USB 5V被拉到3V,電流上升到3A多
緊急把電源斷掉
開始檢查板子(目測加上用鼻子聞XD)
會短路通常優先確認電源IC
(照經驗,SOT23-5的封裝,旁邊有電感,通常是DC/DC的Buck IC)
果然看到一個Buck IC有點異常

這顆IC中間有微微突起

根據旁邊的絲印,這顆IC是U55,找了一下Orange Pi 3的電路圖
可以確認是Wifi module的供電IC

SY8089A, 2A的Buck


先確認損壞程度,第一個先量IC,量到對地短量之後
把IC拆掉 (用烙鐵克難的拆)

拆下IC後檢查旁邊有沒有短路、錫渣
檢查各個Pad還有沒有短路,都沒有
上電觀察電流,正常
插上MicroSD/USB/HDMI
上電檢查,可以開機了!!! 
到這一步可以確認不開機是這顆IC短路
不確定Wifi模組有沒有問題

當下在家裡翻箱倒櫃,想找到Buck IC馬上修,甚至拆了一隻公司的樣品Dongle
可惜找不到適合的
Dongle上面有Buck ic,但只有0.8A,就只好放棄

禮拜一上班
去拿以前收集了廢料回家,再殺了一些不要的板子上面的料
我手邊沒有2A的Buck IC,但是有1.2A跟1.5A的
Wifi module吃電沒那麼重,而且我們的設計也都是一顆Buck就對Wifi module供電
就照上了!



IC的絲印被助焊油稍微遮住看不太到
我這邊改用TI的TLV62565,只有1.5A
但這顆是我手邊能殺到電流比較大的Buck IC了~

焊完IC(用烙鐵焊,加上那個位子很緊湊,所以焊的頗吃力)
目測檢查有沒有短路,沒有(開始有老花症狀了XDDD)
用電錶檢查有沒有短路,沒有
不插卡,用USB Meter上電檢查電流有沒有異常,0.2xA,Safe!
插卡、插USB、插HDMI,同時用USB Meter上電檢查電流有沒有異常
可以順利開機,電流沒有異常,開機後Wifi工作正常!!!

到這邊就可以判斷是修好了:D
以上
留個紀錄


2023年2月11日 星期六

I've reach my Raspberry pi usb current limit, so I've Hack my USB hub.

前言:
我有很多舊的小容量micro sd卡,外接USB Hub,透過usb讀卡機,接到我的Raspberry pi 3,再加上一個sata-usb轉換器,接上小容量SSD,透過btrfs建立一個raid10,當作NAS來使用

最近拿到一台二手的Raspberry pi 4,所以打算來升級我的NAS
(最近兩年Raspberry pi 4缺貨跟漲價實在是太誇張了...)

因為舊的Raspi3只支援usb 2.0,所以當初使用的usb讀卡機許多是usb 2.0的,升級到Raspi4之後,因應Raspi4有支援usb 3.0,所以順帶把所有讀卡機、sata-usb轉換器都換成USB 3.0

沒想到全部更新後,開始出現問題

  • 有很高機率開機會hang住
    (沒辦法正常開機,因為開機時mount btrfs失敗)
  • 正常開機後,對btrfs操作,寫入或讀取資料,有很高機率會出現錯誤,當出現錯誤之後,連同接在Raspi上的keyboard, mouse都沒辦法工作
分析:
從現象可以推測,應該是碰到Raspi的USB current limit,觸發OCP保護
單一個USB port,或全部USB port,總電流超過1.2A就會觸發OCP保護,導致所有usb device被強制斷電
https://support.thepihut.com/hc/en-us/articles/360015272218-How-much-current-can-I-draw-from-a-Raspberry-Pi-USB-port-

對策:
首先可以考慮可以外接電源的USB Hub
但實際上外接電源USB hub會衍伸其他問題
一種問題是USB hub外接電源逆向供電給Raspi,這個容易出現在低價型的USB hub,不確定是Cost down還是本身設計不良,如下圖

外接電源的DC jack,直接以0ohm貼片電阻連接到主要的Power rail,0ohm貼片電阻的零件名稱是D4,表示原先可能是要放二極體,但如果這個位置貼上二極體,當DC jack供電跟USB cable連接電腦同時存在,還是會由USB cable供電,所以我不確定這是不是設計不良。
可能也是因為這個緣故,所以改貼0ohm電阻直接短路。

所以需要一個可以外接電源,而且外接電源不會逆向供電的USB Hub,所以我拆了我的另外一個USB Hub

這個設計就比較合理,以二極體隔開外接電源與USB 電源,當USB電源沒有連接的時候,外接電源不會逆向供電回到USB電源
同時如果外接電源跟USB電源同時存在,以外接電源供應USB Hub電流

實際測試後,確實可以改善Raspi usb電流限制的問題
但又有新的問題,當Raspi關機或是重啟,USB hub因為連接外接電源,實際上不會斷電
這造成usb hub上的設備,有可能因為沒有斷電,下一次開機時沒辦法正常初始化usb設備

所以,我需要一個可以外部供電的USB hub,不會逆向供電給USB Host,當USB Host斷電時USB hub也會同時斷電

實做:
我找了一個現有的buck converter module
(身為一個工程師,手邊隨時有一堆module也是很合理的)

Buck convert IC是mp1584en,接著研究一下datasheet,看看這顆IC的enable有沒有enable功能,以及研究一下這個module可不可以拉出enable pin來控制
有Enable pin,正邏輯,Enable pin超過1.5v時enable output,Enable pin內部有pulled up到3v,內部pull up電阻不確定,但敘述有提到1uA current source,所以推測內部pull up resistor應該很大
考慮到Enable pin有Pull up到Vin,考慮不移除pull up resistor,直接串接的情況下,在USB hub這端透過電阻分壓,確保Vbus沒有連接的時候,Venable可以降到足夠低,同時避免Vin串到Vbus

接著評估怎麼修改
在Hub上找出對應的Pad跟Net,在Ground上找到對應位置,刮除綠漆,提供電阻焊接的位置

接著在Buck converter找出Enable pin的net,方便焊接的點
連接兩塊板子
檢查新增加的電阻、接線,有沒有短路,接觸到其他元件接點或是Pad
都正常之後上電測試,檢查電路工作是不是符合一開始的設計規劃
用三用電錶量測 Buck module Vin電壓,VBus in的時候VEnable電壓,VBus out的時候VEnable電壓,工作正常!
最後組裝

我得到一個可以外部供電(寬電壓輸入,但電壓需要再計算,至少12v可以工作)
不會逆向供電給USB Host,當USB Host斷電時也同時會關閉外部供電的USB Hub!

現在我的Raspi 4工作正常了~

2022年5月6日 星期五

Replace J-S J-7508 Speaker amplifier again

忘記哪來的喇叭,好像是我哥給的,時間已經不可考
最初給我的時候應該是圖片中的擴大器異常,已經忘記是不過電還是音量控制有問題啥的
(剛才查這顆喇叭發現可能是通病,有一些文章有提到長時間使用後,音量的可變電阻可能會不正常)
我已經忘了當初檢修的過程,或是有沒有修了

最後我放棄那個擴大器,直接用另外買的功放板直接推喇叭
(擴大器當初應該就丟了)
從銅柱跟可變電阻的鏽斑看得出已經有歷史的痕跡了...
J-7508配的變壓器是傳統變壓器,加上功率比較大的緣故,整顆變壓器又大又重
所以另外背了一個7815的LDO,這樣我就可以直接用交換式變壓器供電

前一段時間,忘記多久以前,功放開始有點問題,左右聲道有時後會某個聲道沒聲音或比較小聲,或兩個都沒聲音
重新轉一轉接頭、或是調一調音量會有改善
最近又開始居家上班,我開始注意到右聲道音量相較於左聲道音量小聲很多
勉強可以接受,但總是有點不自在
拉一拉扭一扭音量旋鈕後有機會改善,推測應該是音量旋鈕這顆可變電阻問題
這顆是B5K 6pin 的可變電阻,我手邊沒有適合的材料...

於是我找出蠻久以前淘寶買來玩的Class-D功放板 PAM8403
2017年的時候,買來組成一個小的放大器,供電採用現成的DC-DC buck模組
這樣就可以吃比較寬的電壓輸入
但實際測試後發現會有一個noise,推測是DC-DC buck造成的
是可以直接改5v輸入,只要用usb adapter供電
但usb adapter有時候供電品質其實也好不到哪去
所以做好的放大器就擱置了...

這一次受不了舊的放大器,所以拿這顆出來改造
當初懷疑是電源造成底噪的部份
所以這次我沿用原來的DC-DC buck,將輸出電壓調高到7.2v
在輸出端再串一個從高職時期零件盒挖出來的7805

不直接從外部給到7805主要還是考慮7805的耐壓沒那麼高,加上LDO的效率不好,壓降越大、電流越大,LDO發熱越高

氧化非常嚴重的7805,接腳打磨過了,焊電容上去還是焊半天
可能磨的不夠,也有可能烙鐵太弱,或是銲錫不對Orz

加上7805之後,實際測試看看,沒有聽到奇怪的噪音了
表現還算挺不錯的,起碼以我這個木耳來說,我聽不出啥差異XDDDD

至於功率
最初這組喇叭似乎是15W rms x2
換第一組功放板換成7W x2
換第二組PAM8403只剩下3W x2
越換越小了XDDDD

老一輩的觀念是,功放的功率要夠大才推的動單體
實際上不會真的聽到這麼大聲
但功率夠大,推對應的單體聲音才會漂亮

以前學放大器的時候,Class A表現最好,但效率最差
Class D因為是透過PWM的方式去推喇叭,當時課本教的是說這種方式最差,但沒有深入說明
現在的話,我知道PWM如果沒處理好,訊號傳遞到單體上可能就會很悲劇
但現在Class D普及的程度,現在技術已經比早年要好很多了

因為我是木耳,老實說音響發燒友的世界、那些聽起來很抽象的名詞我不是很懂
以第一組功放板來說,他的功放IC是TDA7266,Class-AB 放大IC
從Datasheet可以看得出來
這是7W x2的功放IC,但THD表現最好的低點落在0.5W~2W,3W-4W之後THD就會一路飆上去
所以老一輩說的話也是有些道理

而第二組功放板的功放IC是PAM8403,Class-D 放大IC,3W x2
從Datasheet可以看到,以4ohm、5v舉例,THD一路下降,2w算是最低點,2w之後開始往上飆
所以在正常使用情境,不特別拉高音量輸出的情況下
單單比THD,第二組功放不見得比第一組差到哪去

我自己使用上來說,表現算是相當不錯了:)

替這顆喇叭留個紀錄,順便紀錄一下擴大器的演進歷程


2022年1月1日 星期六

Linux mint crash frequently with AMD CPU/GPU

自從換了Asrock Deskmini A300 + AMD 2400G之後
很常碰到系統hang住的狀況
可能是Hang住,隔了一下子畫面綠屏,再隔一下子系統自動重啟
也可能就單純hang住,系統還活著,可以從其他機器ssh連回這台機器,登入後看dmesg或journalctl,看看是什麼原因
也可能hang住,系統就死了

當發生問題時,觀察dmesg或journalctl,常可以看到amdgpu的異常訊息,例如下面這樣的訊息
(不是固定一種類型,可能會有幾種訊息)
Oct 14 23:23:17 A300 kernel: amdgpu 0000:38:00.0: [mmhub0] retry page fault (src_id:0 ring:0 vmid:4 pasid:32769, for process Xorg pid 897 thread Xorg:cs0 pid 963)
Oct 14 23:23:17 A300 kernel: amdgpu 0000:38:00.0:   in page starting at address 0x00008001016e0000 from client 18
Oct 14 23:23:17 A300 kernel: amdgpu 0000:38:00.0: VM_L2_PROTECTION_FAULT_STATUS:0x00440051
Oct 14 23:23:17 A300 kernel: amdgpu 0000:38:00.0:          MORE_FAULTS: 0x1
Oct 14 23:23:17 A300 kernel: amdgpu 0000:38:00.0:          WALKER_ERROR: 0x0
Oct 14 23:23:17 A300 kernel: amdgpu 0000:38:00.0:          PERMISSION_FAULTS: 0x5
Oct 14 23:23:17 A300 kernel: amdgpu 0000:38:00.0:          MAPPING_ERROR: 0x0
Oct 14 23:23:17 A300 kernel: amdgpu 0000:38:00.0:          RW: 0x1
或是
Oct 12 23:33:19 A300 kernel: amdgpu 0000:38:00.0:          RW: 0x1
Oct 12 23:33:19 A300 kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring sdma0 timeout, signaled seq=328615, emitted seq=328617
Oct 12 23:33:19 A300 kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* Process information: process Xorg pid 949 thread Xorg:cs0 pid 960
Oct 12 23:33:19 A300 kernel: amdgpu 0000:38:00.0: GPU reset begin!
Oct 12 23:33:19 A300 kernel: amdgpu 0000:38:00.0: GPU reset succeeded, trying to resume

從網路上找到的資料可以發現,發生問題的Kernel版本,從4.19一直到5.x都有發生
所以應該是跟Kernel無關
比較具體的分析,大多是說Linux調整CPU的C-state時,可能會踩到CPU的Bug或啥的

所以
有的文章建議在BIOS內修改C-State相關設定
但我在A300的BIOS內找不到相關的設定,所以這個方法我沒辦法測試

有的文章建議 Write "high" into /sys/class/drm/card0/device/power_dpm_force_level
去避免GPU進入省電模式啥的,但這個我調整了還是碰到Crash

有的文章建議在kernel cmdline參數加上idle=nomwait amdgpu.noretry=0,避免kernel頻繁重啟gpu,具體原因是啥我不清楚
這個方式最初我有調整過,但後來一段時間後又復發,因此我不太確定這個作法到底有沒有效

最近我找到這兩篇文章
https://community.amd.com/t5/graphics/solved-random-reboots-and-crashes-ryzen-and-amd-gpu-under-linux/td-p/441637
https://bugzilla.kernel.org/show_bug.cgi?id=206903#c135

文章建議在kernel cmdline加上amdgpu.ppfeaturemask=0xffffbffd
讓kernel禁用特定電源管理功能
詳細的bitmask定義在kernel.org那篇文章中有介紹

我的kernel版本,目前是5.4.0-91-generic
修改ppfeaturemask後,到目前大概接近三個星期,當機的機率有明顯改善
所以來寫一下作法跟來源,留個紀錄

修改/etc/default/grub,加上紅字的ppfeaturemask參數
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.ppfeaturemask=0xffffbffd"
編輯之後, sudo update-grub 更新grub conf
update-grub會重建一次所有grub的設置,把預設參數帶進去

接著重新啟動系統,進入系統後,cat /proc/cmdline觀察當下kernel的參數
確認參數已經生效,修改就完成了

最後就是放上一包乖乖,希望他可以順順利利(crossfinger)

2021年5月16日 星期日

How to disable GUI on armbian (revert the Desktop to server)

  1. Check which Display manager that you're using currently
    cat /etc/X11/default-display-manager
    nodm should be default if you're choose auto login when setting by armbian-config
    but you're change it with lightdm or sddm, so check the display manager first.

  2. Disable current display manager
    if you're using nodm
    sudo systemctl disable nodm
    if you're using lightdm
    sudo systemctl disable lightdm
    if you're using sddm
    sudo systemctl disable sddm

  3. Reboot the system
    sudo reboot

  4. It's should be great now~

2021年2月17日 星期三

how do i fix an error with libc6-dev-armhf-cross in linux mint upgrade

先前升級公司用的工作機碰到這個問題
Log就不貼了,我手邊也沒有,可以參考下列連結

https://askubuntu.com/questions/1079797/how-do-i-fix-an-error-with-libc6-dev-armhf-cross-in-ubuntu-18-04-when-trying-to

不確定我是不是曾經裝過cross compiler,總之升級的時候碰到了類似的狀況
網路上能找到的方案不多,主要能參考的就是上述那一篇問答
建議是刪除重新安裝有問題的package

但實際上我重新安裝,調整順序或啥的,始終出現Package相依性錯誤

最後的解決方法是
sudo dpkg -P --force-depends <Package name>
這個方式,忽略相依性,強制移除套件

接著把libc6-dev-armhf-cross,以及相依的所有套件都移除
不建議用在一般套件上,除非不得已加上你很清楚你要移除的套件
但因為cross compiler的相依性主要以cross compiler相關為主
基本上不影響系統運作


移除乾淨後,透過下列指令修復套件的相依性
順利的話可以回到乾淨的狀態,如果有cross compiler套件沒有移除乾淨,則回到前一個步驟繼續刪

  • Clean the package cache:
    sudo apt clean
  • Update the package listing:
    sudo apt update
  • Fix broken dependencies (should automatically install two of the removed packages):
    sudo apt -f install
都完成之後就可以繼續嘗試dist-upgrade或do-release-upgrade或mint-upgrade

整理網誌~

不久前看了一些文章,提到要做自己的品牌行銷

寫網誌紀錄一些自己的紀錄也是種方法,對我來說不難
畢竟當碰到覺得值得留下紀錄的事情,我也會寫點東西留個紀錄

但我的網誌有蠻大一部份是以前紀錄心情的部份,一直留到現在
從最早的一篇,在ptt2寫下的文章,2003年的文章
這些已經不太適合放在主要的網誌上
所以花了點時間拆分成兩個網誌

原來的網誌改用另外一個domain
原來的網誌內容匯出到新申請的blogger帳號
在新申請的Blogger帳號上,隱藏掉比較私人的部份文章
舊的網誌上依舊全部公開,那些都是曾經的過去,也沒必要特別隱藏
原來的domain則修改對應到新的Blogger帳號上

2021年
希望我可以持續寫下去~

2020年6月4日 星期四

How I fix the "Inconsistency detected by ld.so" issue?


當我要聽歌的時候,從選單中執行了rhythmbox,沒反應...
開了一個terminal,執行rhythmbox,出現錯誤訊息
當時不以為意,直接安裝了另外一套軟體來聽

當我要執行Winetricks時,同樣沒反應
開了一個Terminal,執行Winetricks,結果出現了類似訊息...

mosquito@mosquito-UX31LA ~ $ rhythmbox
Inconsistency detected by ld.so: ../sysdeps/x86_64/dl-machine.h: 519: elf_machine_rela_relative: Assertion `ELFW(R_TYPE) (reloc->r_info) == R_X86_64_RELATIVE' failed!
mosquito@mosquito-UX31LA ~ $ winetricks
------------------------------------------------------
You are using a 64-bit WINEPREFIX. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Inconsistency detected by ld.so: ../sysdeps/x86_64/dl-machine.h: 519: elf_machine_rela_relative: Assertion `ELFW(R_TYPE) (reloc->r_info) == R_X86_64_RELATIVE' failed!
mosquito@mosquito-UX31LA ~ $

這樣哪天要做啥沒法弄的時候就很尷尬了

首先參考了StackOverflow這篇
https://stackoverflow.com/questions/22564780/debugging-ld-inconsistency-detected-by-ld-so
但設定LD_DEBUG=ALL,沒有提供我更多有效的資訊

執行strace Winetricks,噴了很多Log出來,但也沒具體點出是哪裡出問題

從Inconsistency判斷,懷疑是不是檔案系統有問題
執行了一次fsck -y,確實有修正部份問題
但開機後重新執行了一次還是出現Inconsistency detected by ld.so

最後改執行LD_DEBUG=reloc winetricks
10349: relocation processing: /usr/lib/x86_64-linux-gnu/libnotify.so.4 (lazy)
10349:
10349: relocation processing: /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37
Inconsistency detected by ld.so: ../sysdeps/x86_64/dl-machine.h: 519: elf_machine_rela_relative: Assertion `ELFW(R_TYPE) (reloc->r_info) == R_X86_64_RELATIVE' failed!
10350:
10350: relocation processing: /lib/x86_64-linux-gnu/libc.so.6 (lazy)

這次看到,出現Inconsistency detected by ld.so之前正在讀取的Library是libwebkit2gtk-4.0.so.37

重新安裝這個Library
sudo apt-get --reinstall install libwebkit2gtk-4.0-37
重新安裝完成後,再執行了一次Winetricks

It's work!!!
留個紀錄,第一次碰到這個問題...

Brix GB-XM11-3337 售出

偶爾想玩些遊戲,但最近已經很少遊戲完全沒有3D了
先前的魔幻紀元,因為是戰略遊戲,慢歸慢但還加減玩的下去
Skyline只有16fps...

觀望了好一段時間,購入一台ASROCK Deskmini A300 + AMD Ryzen5 2400G
就買原來的Brix GB-XM11-3337給賣了~~

2016/05購入,到2020/05售出
即使是四五年前的電腦了,現在要做基本的文書處理、看看影片或Youtube都還是相當足夠

特地撰文,留個紀念



2019年7月16日 星期二

Age of Wonders III 魔幻紀元三 Linux 繁體中文化

最近Steam上面的魔幻紀元三提供免費下載
剛好這個遊戲有支援Linux,加上我虛弱的硬體勉強可以負荷
就下載來玩看看

基本上是個不錯玩的奇幻策略遊戲
不過沒有中文就看得很痛苦....

剛好這個遊戲有人提供了簡中的Mod
作者提供的安裝介紹
https://steamcommunity.com/sharedfiles/filedetails/?l=schinese&id=743408511
但作者自己沒有嘗試過在Linux下安裝
剩下的就是自己摸索了~
備註一下,我的OS是Linux mint,debian家族或ubuntu家族應該差不多,fedora或是其他的distribution就得自行參考一下


  1. 在Steam平台上安裝Age of Wonders III
  2. 從遊戲頁面當中點選Workshop
  3. 在上方的搜尋bar當中搜尋Chinese,就會出現這個Mod,訂閱這個Mod
  4. 啟動遊戲,在啟動器頁面切換至User Contect分頁,點選Update,就會出現前面訂閱的漢化包,這時可以先關閉遊戲啟動器
  5. 開啟/home/[user name]/.local/share/AoW3/UserContent/汉化包V1 [76561198136587593]
    就會出現作者說的zip壓縮檔
  6. 接著,Linux的遊戲目錄路徑則是
    /home/[user name]/.local/share/Steam/steamapps/common/AoW3
    Path Update: /home/[user name]/.steam/steam/steamapps/common/AoW3
    將目錄下的Language目錄壓縮打包備份
    將前一個步驟中下載的zip壓縮檔解壓縮,覆蓋Language目錄
  7. 重新開啟遊戲,這時的啟動器已經變成簡中的版本
  8. 進入遊戲同樣是簡中,但因為是漢化的緣故,可以看到有部份字串顯示怪怪的,可能是遊戲更新了而漢化包沒有更新


    基本上不影響遊戲性
  9. 先感謝這位老兄提供漢化包,只可惜,我簡中雖然看得懂大部分,看比較短的文章或是技術性文章還ok,看這種類似奇幻文學的東西就看的十分痛苦....
    所以接著處理繁體中文化的部份
  10. 這個漢化包當中,針對Language的部份不清楚是怎麼處理的
    沒有進一步研究他的結構或是多國語言處理方式...(我只是想玩遊戲...)
    但是在逛漢化包的過程中發現了Font目錄
    /home/[user name]/.local/share/Steam/steamapps/common/AoW3/Language/English/Title/Fonts
    Path Update: /home/[user name]/.steam/steam/steamapps/common/AoW3/Language/English/Title/Fonts
    打開來看則是四個檔案大小一致的true type font,ttf檔案
    推測應該是漢化包自帶的中文字型,避免遊戲中沒有正確的中文字型造成方格字問題
  11. 從字型下手,將中文字型更換為簡體轉繁體字型
    (不修改原來的字碼,而是直接修改字體,將字體中的簡體字直接替換成繁體字)
    基本上可以覆蓋90%以上的簡體字
  12. 替換時發現,如果字體的檔案大小太大,進行遊戲時會有一些異常現象,例如對話框或是選單消失的狀況
  13. 實際測試,這一包字型可以直接使用
    重灌狂人 - 將 [簡體中文] 的軟體介面瞬間變成 [繁體中文] 版!
    備份: https://drive.google.com/open?id=1U2kZf67-N7AQAms8v0S3PtTeiu8KXc9o
  14. 下載字體後,替換第10點路徑中的四個字型檔案,檔名維持原來檔名
  15. 更換字體後開啟遊戲
    Launcher還是同樣維持簡中,但不要緊...
    遊戲已經變成繁體中文了...




2018年8月31日 星期五

Remove utorrent torrent from command line

refer:
skyy99 post on utorrent forum
https://forum.utorrent.com/topic/66811-script-to-remove-finished-torrents/

The original post does not work, cuz it utorrent would check cookies, so I've fix it first
After fix the script, the script could fetch correct list and remove torrent and data correctly.

Second, I need find the oldest torrent, but the list structure is hard to sorting
So I try the dummy way ( But it save some coffee time for me :p )
Just find the oldest torrent and remove it.

Cuz I need the script for free the space automation,
So if the space still occupy, just need call it again. :p

It's dirty, but worked!


# Get the auth token.
user="********"
password="********"
server="127.0.0.1"
port="8080"
#removeAction="remove" # Change to removedata to remove torrent+data
removeAction="removedata"
Label="LabelText"
# Don't change anything below this line (unless you know what you're doing)

resp1=`wget --save-cookies cookies.txt --keep-session-cookies --http-user=$user --http-password=$password -q -O - \
http://$server:$port/gui/token.html`
token=`echo -e "$resp1" | awk -F'[<>]' '/

]*id=[\"'"'"']*token[\"'"'"'][^>]*>([^<]*)<\/div>/ { print $5 }'`

# Get the list of finished torrents
resp2=`wget --load-cookies cookies.txt --http-user=$user --http-password=$password -q -O - \
http://$server:$port/gui/?list=1\&token=$token`

# Substring it to the start of the torrents list.
ndx=`echo -e "$resp2" | tr "\n" " " | awk '{ndx=match($0, /,"torrents": \[/); print ndx }'`
sstr=${resp2:ndx}
oldest=`date +"%s"`
# Look at each line and identify the torrent listing.
rx='^\[\"[^"]*\",[0-9]'
IFS="
"
for line in $sstr
do
if [[ "$line" =~ $rx ]]; then
lineTokens=(`echo -e "$line" | sed -e 's/\[//g;s/\]//g;s/"//g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' `)
TokenLabel=$[${#lineTokens[*]}-15]
if [[ "${#lineTokens[*]}" -ge "26" && "${lineTokens[1]}" == "136" && "${lineTokens[$TokenLabel]}" == "$Label" ]]; then
if [[ $oldest -gt ${lineTokens[22]} ]]; then
oldest=${lineTokens[22]}
fi
fi
fi
done
for line in $sstr
do
# If this line matches a torrent item in the torrents property...
if [[ "$line" =~ $rx ]]; then
# Tokenize the fields.
lineTokens=(`echo -e "$line" | sed -e 's/\[//g;s/\]//g;s/"//g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' `)
dlNdx=$[${#lineTokens[*]}-15]
TokenCount=${#lineTokens[*]}
TokenLabel=$[${#lineTokens[*]}-15]
TokenStatus=$[${#lineTokens[*]}-7]
TokenCompleted=$[${#lineTokens[*]}-4]
# Double check that this is a torrent listing and that it's finished.
#echo $line
#echo "${#lineTokens[*]} ${lineTokens[$TokenLabel]} ${lineTokens[$TokenStatus]} ${lineTokens[$TokenCompleted]}"
#if [[ "${#lineTokens[*]}" -ge "18" && "${lineTokens[1]}" == "136" && "${lineTokens[$dlNdx]}" == "1000" ]]; then
if [[ "$TokenCount" -ge "26" && "${lineTokens[1]}" == "136" && "${lineTokens[$TokenLabel]}" == "$Label" ]]; then
# Make the call to remove the torrent.
if [ "${lineTokens[$TokenCompleted]}" == "$oldest" ]; then
echo "Torrent $removeAction: ${lineTokens[0]}"
resp3=`wget --load-cookies cookies.txt --http-user=$user --http-password=$password -q -O - \
http://$server:$port/gui/?action=$removeAction\&token=$token\&hash=${lineTokens[0]}`

if [[ "$resp3" == "" ]]; then
echo "Error removing torrent: ${lineTokens[2]} (id: ${lineTokens[0]})"
fi
fi
fi
fi
done

rm cookies.txt


2017年6月29日 星期四

transfer to new domain, blog.mosquito.work

有天心血來潮,確認一下我的domain mosquito.tk還有多久到期...
大約剩下500天不到,可以renew了
正想續約的時候發現價格不太對
以前3年不到25塊美金,5年好像也是25塊美金
怎麼現在變一年要將近10塊美金了Σ(゚д゚)

因為我的domain還綁著G Suite,以前的Google apps
而免費版的G Suite不能更換domain
所以內心交戰許久...

最後考量了很久
G Suite也是沒在用,只有用mail當mail agent收公司信
但實際上,另外申請一個gmail就可以取代原來的功能

原來的domain是ccTLD,搜尋時依照區域排序的原則也會被擺到後面去
(.tk是托克勞的地區頂級域名)

就決定重新找一個看的順眼的domain...

搜尋了一下,網路上的domain代銷商很多,而且domain的價格很亂
找到了一個可以直接列出所有domain比價網站
https://www.domcomp.com/

同時也注意到現在除了傳統gTLD,國家及地區的ccTLD以外,還多了些特別的TLD
同樣屬於gTLD,但是比較特別XDDD

原先想挑mosquito.black
但.black好貴阿...註冊要11塊多鎂,續約要18塊多鎂
本著勤儉持家的精神,買了一個domain就會用很久,既然會用很久,那挑便宜的也是合情合理

最後決定挑mosquito.work
最便宜的代銷商是porkbun(肉包?)
沒有踩到什麼關鍵字所以是照一般價格
註冊1.83 USD,續約6.67USD
如果踩到什麼關鍵字或是選擇的名稱比較短,通常會有一個特別的價錢
(特別貴的價錢...)

自己的domain還挑了一個.work
是有沒有這麼愛工作?!
想想,反正我的blog常常寫一些惡搞的dirty work
.work似乎也不錯:p

搬家、設定處理的差不多了
處理最久的部份應該是轉gmail...工作七年的mail數量很驚人阿

舊的domain會繼續維持轉址,直到過期再整個撤掉吧
從08年還在唸大學的時期就租的domain,到現在也將近9個年頭了
歷史的眼淚XDDDD

2017年3月10日 星期五

ffmpeg h264 vaapi encoder error

心血來潮要看一部影片,發現在小米盒子上要嘛不支援
要嘛解的效果不好
原來這個影片是用h264 10bit格式壓縮
在電腦上看還可以,但總是想舒舒服服的躺在沙發上看影片
所以決定來轉檔

一開始在我的電腦上直接進行轉檔
Brix xm11-3337 Speed: 0.500x
嘗試透過vaapi加速,結果我得到錯誤訊息
impossible to convert between the formats supported by the filter 'Parsed_null_0' and the filter 'auto-inserted scaler 0'

丟到Raspberry pi 2上進行轉檔,同時開啟h264_omx hardware encoder
Speed: 0.479x

回頭查看看為什麼沒辦法透過vaapi加速
找到這篇文章
refer: https://ffmpeg.org/pipermail/ffmpeg-user/2016-May/032153.html

其中,我使用的vaapi device與文章中提到的不同,實際使用時可能要測試一下
ffmpeg -vaapi_device /dev/dri/card0 -i -vf format=nv12,hwupload -vcodec h264_vaapi -level 41 -acodec copy

透過vaapi加速編碼
Speed: 2.49x

一來速度快多了,二來這個速度已經足夠應付TVHeadend的即時轉碼
可以列入考慮~

2016年12月27日 星期二

Tvheadend and Raspberry pi

很久以前曾經有研究過DVB-T Streaming
http://blog.mosquito.work/2014/07/stream-dvbt-by-vlc-on-debian.html

後來嫌麻煩放棄了,維持了很長一段時間在本機上透過me-tv直接看電視
(這過程中還包括研究vaapi、VDAPU,透過硬體加速改善Full HD解碼效能)

me-tv升級後嘗試改變架構,改為Client-Server架構,
後續維護的沒那麼好,加上功能始終很陽春,可是我只是拿來看看電視
所以一直沒有去動這塊

前一陣子,為了看小熊對印地安人總冠軍第七戰
我在公司的時候,花了不少時間在查線上收看
可是沒一個能看的
最後發狠,WOL把家裡電腦打開,透過第一個連結的方式
直接用VLC串流,讓我可以連回家裡看轉播XDDDD


因為這樣的緣故,又心血來潮Google類似的關鍵字
我找到了Tvheadend
這是一個PVR軟體,但是有很多Client可以搭配使用
所以我在我的Server上安裝Tvheadend,把USB DVB-T dongle移到Server上
接著在手機、桌機、小米盒子上分別安裝對應的Client
手機是TVHClient https://play.google.com/store/apps/details?id=org.tvheadend.tvhclient&hl=zh_TW
桌機則是用Showtime https://movian.tv/ 我搞不太清楚到底叫movian還是Showtime...
小米盒子上則是裝Android Kodi https://kodi.tv/download/

這樣一來,我可以在三個不同裝置上收看數位電視咧~

但還是有一些缺點,Tvheadend預設是Pass profile
就是從USB DVB-T Dongle收進來的TS,直接轉送出去
好處是佔用相當少的CPU資源
缺點是佔用比較多頻寬
一個是在家裡看FullHD頻道,很容易出現影音不同步現象(但後來懷疑是小米盒子解TS的效果不好Orz)
一個是在外面就更不用想看FullHD頻道,我家網路上傳頻寬不夠大...

又一次心血來潮,繼續Google,
嘗試現有的Server上開Transcoding,花了不少時間終於可以打開,結果因為CPU太差,一開就是悲劇
又找到另外一篇文章,有人在Raspberry Pi上使用Tvheadend,並開啟HW Encoder
也有人說Raspberry Pi 3的效能足夠負荷最低品質的Transcoding...(但我的是Raspberry Pi 2...)

因此,我又花了一堆時間,最終在Raspberry Pi 2上弄好Tvheadend
實際測試的結果,Transcoding同樣是悲劇
但在電腦上面看FullHD似乎影音不同步的現象有改善?!

就不管了,目前先這樣照用,
等哪天心血來潮,再來想辦法研究
順帶一提的是,Raspbian新的Desktop PIXEL
用起來的感覺比以前舊版本的要漂亮多了~~~~
那張大大的底圖,基本上增加很多印象分數XDDDDD

2016年12月1日 星期四

Fix Spreadsheet Compare (Compare between 2 excel file)

因為有需要進行Excel的比較,找到一個open source的tool

http://www.thefoolonthehill.net/drupal/Spreadsheet%20Compare
https://sourceforge.net/projects/spreadshcompare/

安裝教學與問題排除
http://www.thefoolonthehill.net/drupal/sites/default/files/WebFM/admin/help/Spreadsheet_Compare/Spreadsheet%20Compare%20Help.html?Introduction.html

這個還不錯用,只是使用時要自己手動設定一堆,或是另外安裝一堆Library
搞到最後,有一個MSCOMCTL.OCX
根據說明文件,這個是ProgressBar的元件
忘記是裝不上去,還是裝上去卻一直有問題

最後放大絕,直接把ProgressBar這個元件,連同相關代碼都註解掉
至少讓功能可以動作

留個備份
https://drive.google.com/file/d/0B1wG0-c31TM2NFNXeWtRTVV0U00/view?usp=sharing

Racknerd可不可以升級?搬VPS?搬遷的Step by Step (Racknerd 2024 Black Friday 新方案)

 先附上Racknerd 2024 Black Friday 新方案 RAM CPU core 空間 流量 頻寬 價格 1   G 1核 20G 1.5T/月 1Gbps $10.99/年 2.5G 2核 40G 3.0T/月 1Gbps $18.93/年 3   G 2核 60...