2022年8月2日 星期二

對不起

對不起,我忽略了妳的感受,我沒有真正了解妳的想法

謝謝妳,遷就了我17年

辛苦妳了

妳自由了

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月4日 星期日

東亞日光燈具型錄

找電子安定器挖到的資料
留一份起來作參考

https://drive.google.com/file/d/0B1wG0-c31TM2ZHpFR3RRZUFoUFE/view?usp=sharing

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

2016年11月14日 星期一

MicroSD Card write endurance test

前文
MicroSD/eMMC Endurance?
讓我想試著測試MicroSD卡...

如同網路上對SSD作的測試
我想要對一張MicroSD卡持續讀寫,驗證它甚時候出現BadBlock
這個測試放在我的Server上面跑,因為一般PC沒有SD Interface
所以採用USB讀卡機作為SD Interface

因為MicroSD不像SSD有SMART資訊可以判讀總寫入量(Total Bytes Written)、錯誤發生數量(
Reallocated Sectors Count)
所以採用Badblocks直接對磁碟進行讀寫操作,判斷錯誤發生的數量
讀取/proc/diskstats的sectors written判斷總寫入量

最後,收集數據,自動上傳到Blogger,最後再來想怎呈現
測試的Log會自動發布在Sandisk 8G Write Test

目前測試的MicroSD卡是舊的,等整個測試驗證ok再拆新的卡來跑XD
測試shell script如下,如果有修改再更新

#!/bin/bash

# Loop badblock to write disk
# check the disk endurance, and update it to blogger

DISK='sdc '

while true
do
	sudo badblocks -ws -o usbstick.log /dev/sdc
	DATE=`date -R`
	DISK_TOTAL_MBYTES_WRITEN=`grep $DISK /proc/diskstats|awk '{print $3"\t"$10 / 2 / 1024}' `
	BADBLOCKS_LOG=`cat usbstick.log`
	echo $DATE,$DISK_TOTAL_MBYTES_WRITEN,$BADBLOCKS_LOG >> Sandisk_8G_Write_test.txt
	b.py post Sandisk_8G_Write_test.txt
done

8G的卡, MLC如果3000次,可以寫入24TB的資料量
假設2MBytes/Second
要花138天...

Post Blogger from Linux Shell or command line

前文
MicroSD/eMMC Endurance?
MicroSD Card write endurance test

在進行測試的過程中,我打算把測試結果自動發布
要發布到網路上很簡單,但確有不少限制
如果隨便找個網站或是pastebin貼,在這個Blog上我只能用一個Link的方式指過去
不能透過javascript撈到這些資料
因為安全性因素,javascript預設不能跨站存取資料
refer: 同源政策 (Same-origin policy)

要處理這塊似乎有點麻煩,因此我把念頭轉向直接更新到Blogger上

陸陸續續Google了不少資料,測試不同的範例
從shell script到python的範例
從Google API v2到v3
oauth 2.0 api到Blogger api
(我應該再多比較一下的...現在看起來直接貼blogger比CORS還麻煩Orz)

最後找到這個專案
b.py http://pythonhosted.org/b.py/index.html
不確定Owner還有沒有在維護,因為網頁上有尋求人接手的訊息
執行的時候有Warning message,但還可以正確動作

文件看起來很詳細,但實際用起來還是碰到一些狀況
備註一下這些狀況或是我覺得寫的不清楚的地方

  • http://pythonhosted.org/b.py/introduction.html#installation
    可以用pip安裝,但pip安裝時沒有處理相依性問題,網頁上有另外列出相依的package
    (是pip本來就不會處理相依性問題嗎??我不太熟這個...)
  • 安裝後,因為我要貼到Blogger,需要透過Google開放的api進行操作
    Google api改為全部資料存取必須先經過oauth 2.0 api認證
    所以需要設定相關的client_ID跟client_secret
    (這兩個值需要在Google API Console申請)
    http://pythonhosted.org/b.py/apidoc/bpy.services.html#module-bpy.services.blogger
    但這邊提供的範例內,service_options宣告為dict型態,key為字串型態,應該要用單引號包起來
    但client_id跟client_secret沒有...
  • http://pythonhosted.org/b.py/introduction.html#dependencies
    相依性列出的算是詳細,但可能是因為小弟我資質駑鈍,有些地方一開始沒看懂...
    Handlers是負責解讀文件的parser,將文件解讀為正確的排版,貼到Blogger上
    Handlers是粗體字,底下的AsciiDoc、HTML、Markdown、reStructuredText、Text表示的是可以支援的輸入格式,需要對應的Package來處理

    Markdown似乎不支援一些語法? 我用Table語法沒有被正確處理成Table
    reStructuredText需要的Package似乎下架了,因為我找了半天找不到
    最後才看懂他的表示方式,因為我只需要簡單的文字,所以直接使用Text格式上傳
    輸入格式依據輸入檔案的副檔名決定
搞blogger的時間比我寫測試腳本的時間還多很多...

Anyway, It's worked!

MicroSD/eMMC Endurance?

隨著NAND Flash越來越普及,NAND Flash的價格越來越低,低到可以當作PC的主要儲存媒介來使用,SSD單價比硬碟高一些,但速度比硬碟快上許多
可靠度也已經有不少測試,實際驗證SSD的可靠度
依照測試的結果,SSD一般使用情境應可以使用上七八年不成問題

但實際上,隨著半導體製程的演進,密度越大,價格越來越低
NAND Flash的可靠度也越來越低...
實際上現在的MLC NAND Flash,P/E Cycle已經降到剩下3K,而且這還是開啟一堆雜七雜八功能的情況下的可靠度...
快閃記憶體可靠性對控制晶片的挑戰

從NAND Flash耐受度(Endurance)與所需ECC修正位元數的趨勢來看,過去SLC僅使用1bit ECC,P/E Cycles為100K,到了2xnm就降到60K,MLC則隨著製程的演進,Endurance呈現巨幅下降,ECC修正位元數呈現指數曲線的暴增;從5xnm製程的MLC的P/E Cycles有10K、需4bit ECC,到3xnm製程的MLC其P/E Cycles已下降到5K,且需要 8bit ECC;2xnm製程的MLC則降為3K、ECC修正位元提高到15~24bit。而TLC記憶體的P/E Cycles更降到1K以下,需72bit甚至上百位元的ECC。因此Flash控制晶片的編碼技術,將從BCH編碼技術,逐漸轉向LDPC(Low Density Parity Check)。

refer: Flash與SSD產業的挑戰─可靠度與總成本
我手上有Raspberry pi跟Raspberry pi2各一塊,都是用MicroSD作為主要儲存
另外手上的手機、平板也分別是使用NAND Flash與eMMC作為主要儲存

我手上有一台艾諾烈焰,製造日期為2012/08/16,主要拿來看漫畫、小說的
這一兩年也出現過異常緩慢,開機後出現缺少package之類的訊息,有時甚至要進行還原才能正常工作
懷疑是NAND Flash已經衰退,剩下就是拖一口氣,看哪天壞到連還原都沒救XDDD

這台是直接使用NAND Flash的產品,拆機圖片如下
貼的NAND Flash為美光29F64G08CBAAA
這顆現在應該停產了,淘寶上還找的到料(不知道是真的假的...)
像這種Pure NAND的產品,依靠的是SOC本身的NAND Controller作ECC與Bad block control
NAND Flash的可靠度也無從判斷起...


那如果是使用eMMC的產品,或是使用MicroSD搭配RaspberryPi,MicroSD/eMMC提供的可靠度足夠讓系統長時間穩定運作嗎??

網路上找的到的資料不多,如果我自己來作這樣的自動測試?
有這個念頭...就開始弄吧:D

2016年7月13日 星期三

第一次洗板子... ADC Converter v0.1

先前因為工作需求,拿麵包板接了一個電路
用STC的mcu,搭配10K NTC電阻
用mcu作溫度觀測

FW的部份
ADC量測,換算成溫度,透過UART輸出量測結果
接著以PC teraterm作Data logger

同事看到覺得這個不錯,雖然公司沒有專門的溫度監測儀器,
但針對一些需要長時間監測的情況還是可以湊合著用

我心中的小宇宙又燃起了一把火
一直沒有完成的電路跟Layout
(每次畫到一半就放棄,Layout線拉不出來...)

趁著有需求,週末花個一天時間把線路跟Layout畫完
我對Layout很不熟,看是會看,畫倒是沒有任何經驗
想說反正低頻,也沒吃多大電流,管他媽媽嫁給誰
把幾條主線大概拉一拉
剩下就Autoroute給他跑下去XDDDDDD

畫電路跟Layout是用Eagle免費版本,有一些限制,但夠用
不過更好的是,Eagle有Linux版本~~~~

Firmware則是用Code::Blocks搭配SDCC,在Linux下編出Intel Hex格式的binary
燒錄原先是在公司用STC的Tool燒,STC的tool只支援Windows
回到家裡,則是在網路上找到的tool stcflash.py

綜合以上,整個開發都可以在Linux platform下完成

Layout在淘寶找了一個pcb洗板打樣的賣家
花了40塊人民幣(運費10塊~25塊另計)
最後成品回來,自己再人工上件

洗板的成品跟上件後的成品如下

幾個缺點紀錄一下

  • 當電源開關的Switch選錯Symbol=_______=
  • Crystal原本想Co-Lay,可以選用Dip件或是SMD件,結果放太近了,鐵殼會貼到Pad。
    在上件前先貼上透明膠帶充當絕緣XD
  • Crystal的負載電容其實轉45度就好放很多,當初不知道在糾結啥,硬放一個很奇怪的位置,不太對稱XDDDD
  • 應該再多一條Trace放LED,充當電源指示燈跟放電迴路,放電放的有點慢
  • VCC那條Net沒有特別改,只有10mil寬,應該要再加寬一些

2016年6月25日 星期六

reset USB device when resume/wakeup my desktop with linux mint 17 (ubuntu 14.04)

Cause I've replace my desktop before, from Homebuilt computer that old than 8-year
To brix mini computer, and I've solve the monitor VH226H HDMI source could not sleep issue by replace it to VGA source...

Now I have a computer that can sleep/hibernation and wakeup/resume
but following issue is, I've plug a DVB-T usb dongle on my Desktop, and I'm using Me-TV 1.4 as my TV player,
Me-TV 1.4 turn into server and client architecture, so server application will stay in background, keep open device

If computer sleep or hibernation, it wake up or resume quickly, but DVB-T dongle might be work abnormal, maybe the driver does not implement relative power management function? I don't know:~

I need replug my DVB-T dongle , kill Me-TV server manually to make it work
Hm.... Try to make it easier:)

put following code to /usr/lib/pm-utils/sleep.d, save as 99ZZ_my_script, and make it executable
it could kill me-tv both server and client when sleep,
and when you wake up, find the usb port number, force it reset

#!/bin/sh
# resume me-tv-client if exist

case "$1" in
 hibernate|suspend)
  #echo "7 blink" >/proc/acpi/ibm/led
  killall me-tv-server
  killall me-tv-client
  ;;
 thaw|resume)
                for X in /sys/bus/usb/devices/*; do
                    #if [ "$VID" == "$(cat $X/idVendor 2>/dev/null)" -a "$PID" == "$(cat $X/idProduct 2>/dev/null)" ]
                    if [ "MDTV Receiver" = "$(cat $X/product 2>/dev/null)" ]
                    then
                        Port_Number=`echo $X | awk -F / '{print $NF}'`
                        #echo "Found $Port_Number"
   echo $Port_Number > /sys/bus/usb/drivers/usb/unbind
   sleep 1
   echo $Port_Number > /sys/bus/usb/drivers/usb/bind
                        break
                    fi
                done
  ;;
 *) exit $NA
  ;;
esac

exit 0



refer:
  1.  Run Script on Wakeup?
  2.  POWER OFF AND ON USB DEVICE IN LINUX (UBUNTU)

2016年6月19日 星期日

換了新眼鏡...

換了新眼鏡,留個紀錄
這次配的度數比較高一些,
不過好市多的眼鏡部,驗光比一般的眼鏡行要來的仔細咧...


2016年5月27日 星期五

Brix GB-XM11-3337(Intel graphic HD4000, HDMI and miniDP) multi monitor with linux Mint 17

一兩個禮拜前,我跟朋友買了一台Brix GB-XM11-3337
取代我原有的桌上型主機,快要十年的e6300+EP35-DS3

一開始花了兩天的時間把舊的OS搬到新的硬碟去
舊的硬碟是SATA 64G SSD
換到新的硬碟mSATA 128G SSD
都是之前公司的同事友情贊助的>//////<

花了兩天處理,因為一開始沒處理好,不小心把grub弄爛了Orz


搞定作業系統後,第一個就是體驗到開機果然快上不少
(光是USB開機都比之前快Orz)

接下來就是處理雙螢幕問題
之前在網路上一次買了兩條線,一條miniDP轉HDMI、
一條miniDP轉VGA

兩條線在公司的Notebook上測試都正常
但回到Brix GB-XM11-3337,miniDP轉HDMI正常,miniDP轉VGA偵測不到

因為我需要VGA螢幕搭配KVM的緣故,所以必須處理VGA問題
先從軟體方面著手,
試著安裝intel graphic installer,
但沒想到現在支援的作業系統平台只有ubuntu 14.10, 15.04, 15.10
14.04還不支援,16.04兩個LTS版本還沒支援...
Linux mint 17 based on ubuntu 14.04,結果就是悲劇...

測試了幾個作業系統都是同樣結果,
甚至手動將Kernel升級到4.3.3也是同樣結果


軟體方面無法改善,改從硬體方面下手
miniDP轉VGA的線拆開後,發現是Realtek RTD2168方案
網路上找不到這個IC的Datasheet
仔細逛了一下,有些miniDP轉VGA標榜使用的是Analogix ANX9832
在拍賣找到一個,貴了一點,直接下標購買
截圖留個紀錄
回家之後測試同樣不能用... =______=
看起來跟我買的第1條長的就是一模一樣
拆開來看看

What's the...
跟賣家說的不一樣,結果還是RTD2168...

往比較負面的角度想
這個賣家八成也是批來賣,可能也沒搞清楚他賣的是什麼方案
隨便從網路上抄資料來貼的吧...
這條線聯絡賣家退費了
商品規格與實際商品不同,有廣告不實的嫌疑
如果商品有價差(例如拿低價規格當高價賣),有詐欺的嫌疑
其實我不太懂賣家的態度不太好是什麼意思...


馬上在PCHOME再刷一條,

http://24h.pchome.com.tw/prod/DPAH48-A9006PZ07
收到之後測試,果然可以用了!!!!!



雙螢幕到此告一段落
接下來要處理VH226H HDMI不會休眠,
或是因為我的新電腦太省電,結果我的節能延長線沒辦法正常斷電的問題=___=

2016年3月6日 星期日

wpa_supplicant configuration with unicode/chinese SSID

為了設定raspberry pi的wifi搞了幾個小時
留個紀錄,以便我自己可以google到XD

refer: http://lists.shmoo.com/pipermail/hostap/2012-August/026419.html
wpa_supplicant.conf
ssid這欄可以直接吃hex的ssid
所以,例如我的SSID是小黑的家
轉成utf8 hex是E5 B0 8F E9 BB 91 E7 9A 84 E5 AE B6
直接在wpa_supplicant.conf輸入
ssid=E5B08FE9BB91E79A84E5AEB6

上述例子是utf8,我不確定會不會有ssid用utf16編碼
可能碰到要再試試

2015年9月23日 星期三

Word Search and Replace...and Batch Convert to PDF

我老婆手邊有幾百個Word檔要轉成PDF
但公司電腦,沒有權限安裝PDF Creator
(一般免費的Pdf creator軟體大多藉由虛擬印表機實現PDF轉換)

不需要安裝PDF印表機的軟體大多也是商業軟體

既然這樣可以利用MS Office本身的另存為PDF檔功能

但Word又不支援批次轉檔

因此,我拿一個蠻方便的軟體來改
Word Search and Replace
可以針對大量的Word檔進行搜尋取代

因為另存為PDF是Word 2010才提供的功能
這個修改只有寫在WordSR_240_7_pdf.docm當中
(Word 2007需要安裝額外套件,Code的寫法也不同,所以就不針對2010以下版本處理)

有需要請自行下載

Updated: 修正2007相容性問題
https://drive.google.com/file/d/0B1wG0-c31TM2cS1JQjdNV3dDWVE/view?usp=sharing

2015年5月9日 星期六

C.H.I.P - Allwinner A13 single board computer



http://share.inside.com.tw/posts/16445

同學也轉貼了不同網站的同一個消息
昨天才剛好跟主管在聊公司未來的產品方向,
那小弟來獻醜分析一下好了

C.H.I.P
(這個產品名稱就叫作C.H.I.P)
https://www.kickstarter.com/projects/1598272670/chip-the-worlds-first-9-computer?ref=category_popular

硬體

先從硬體角度來看,這張圖其實有點誤導的嫌疑
從文章裏面來看,這是一塊6cm x 4cm的單板電腦
如果真要跟長尾夾相比,那這個比例肯定是特大號的長尾夾 
可能是因為這樣的緣故,文章裏面換成了香蕉
(是香蕉,不是太陽花...)

CPU採用Allwinner A13,這顆CPU是2011年的產品,並不是多創新的設計
A13其實是A10的Cost down版本(閹割版)
跟A10相比,少了HDMI輸出、SATA介面等等

A10一開始做平板電腦的應用,主推中國白牌、二線品牌市場
取得了一定程度的市場份額
但同一時間還有其他產品,例如瑞芯微Rockchip的RK2928

2012年CES展出HDMI電視棒
文章中並未說明是採用哪一家的方案,但文章中提到的硬體規格是雙核心的方案

但A10算是成功打響這個市場,
第一個產品MK802就是Allwinner推出的參考設計,他們直接推出成熟的參考設計,
以及預先編譯好,可以自行做小幅度客製化的FW,快速的把市場打出來

MK802 dimension 90 * 40 *13 mm
其實就可以看出,60mm * 40mm並不是很大幅度的改進
因為MK802還有一個HDMI connector,但是這個單板電腦卻沒有

價格,9塊似乎很驚人!!但實際上分析一下,
4GB EMMC大約2.3~2.4 USD
512MB DDR約2.7~3USD
加上WIFI/BT 2in1的module、Connector、PCB
9塊其實是有機會做到的
何況,出貨日期是DEC/2015...
(那顆CPU的價格其實比你想像中的便宜XDDD)

軟體

接著從軟體的角度(其實我是一個Firmware/Software engineer >////< )
市面上的所有SOC vendor幾乎有志一同的,全部都不開放原始碼

Raspberry Pi? 他用的SOC是Broadcom的BCM2355,同樣沒有開放原始碼
只是透過完整的middle ware,讓開發者可以盡可能的操作硬體

Allwinner其實也相同,這點可以在linux-sunxi的網站敘述當中看到,
https://linux-sunxi.org/Main_Page

The sunxi community is a very active and advanced one. For more information, check our linux-sunxi community page. It explains how to get help and how to contact us, and how you can contribute as well.
Allwinner does not actively participate in or support this community. In fact, it is violating the GPLv2 license in several ways and has so far not shown willingness to resolve this.
但C.H.I.P提供的linux image,可以肯定的是其中sunxi這個社群的貢獻一定功不可沒
他提供的就是一個完整的Linux distribution
包含相關的應用軟體,因此可以視為一個完整的電腦來使用
這部份應該要感謝raspberry Pi,沒有raspberry Pi的蓬勃發展,
linux distribution的package repository也不會將arm的package建立的這麼完整

但是作為一台個人電腦來使用,真的可以取代傳統x86嗎???
這樣說好了,Raspberry為什麼二代要換4核心的處理器?

A13的效能應該可以肯定比Raspberry Pi一代要來的好
但是如果要期望他可以用起來十分順暢,我想只能說他堪用...

另外,因為arm的software package肯定沒有x86/x64要來的完整,
所以如果要用什麼軟體沒得用,肯定只能自己撈tarball來自己build
這也還好,十幾年前大家玩linux不也是這樣過來的:)
雖然說過了十幾年,linux已經變得親和許多,但實際上還是有許多不夠親切的地方


應用

既然作為個人電腦使用,可能沒辦法滿足我們現在的胃口
(對於落後國家或是第三世界的小朋友應該還是很足夠)
那麼這塊板子我們可以拿來做些什麼用途????

說白話的,這就是一台電腦
具體可以做什麼用途,一般的個人電腦
多媒體播放機(XMBC)
POS、Digital signage、Kiosk
硬體提供平台,軟體就端看你怎麼用

真的沒有創意,請參考這個Link
http://lmgtfy.com/?q=raspberry+pi+application+ideas