這篇是叫 Claude 從我的筆記整理出來,事情真的發生過,字是他打的,連語氣也是叫他學我的,我只負責瞄一下的喔。
螢幕上沒東西,先怪螢幕,再怪板子
先講這是什麼東西
我最近在做兩台自己的 terminal。一台叫 tang console,是一塊 FPGA 板子上跑 Linux,HDMI 直接輸出 1080p30 的文字畫面;另一台是 前一篇 那台 pico2w-tang-term,Pico 2 W 加 Tang Nano 20K,720p 輸出。兩台都是接上 HDMI 跟鍵盤就能用的小盒子,很復古,字很大,就是故意的。
工作室的螢幕是 LG 的 32SR83U,就是那種裡面有 webOS、可以自己開 YouTube、比我的板子聰明很多的智慧螢幕。平常也接著 Google TV 的播放器跟一台 PC。這篇要講的就是它,跟它玩了兩次,兩次都輸。
第一次:開機訊息都有,就是沒有 login
tang console 接上去,OpenSBI 的 banner 有、kernel 的 boot log 一行一行刷過去也有,然後畫面就剩下桌布。tang-vex login: 呢?沒有。等了一下,還是沒有。換一台別的螢幕接,提示好好的在那邊,一副「你在找我嗎」的樣子。
好,那就是板子的問題嘛。(不是。)懷疑過 tanglink 這條控制線、懷疑過 SD 卡釋放的時機、懷疑過 flash 的 layout,一個一個查,全都沒有關係。板子很冤,但那時候沒人知道。
答案是 overscan。webOS 看到 1080p30 這種訊號,就當作是電視的影片訊號來處理:「喔,這是電影吧,邊邊要裁一圈才好看」,於是上面切掉兩三行字,左右各切掉十來個字。偏偏 login 的那個小面板就畫在最上面三行,整個被裁光光;boot log 有 54 行,少了上面幾行誰看得出來,所以前面才會一切看起來正常。它不是沒畫 login,它是畫了,然後螢幕幫我收起來了。
修法超簡單,螢幕的選單:圖片 → 畫面比例 → 「點對點掃描」打開。提示就這樣出現了。查板子查了半天,結果是按遙控器喔。遙控器上面沒有 bug,遙控器上面只有按鈕。
順便一提,另一台 4K 螢幕更直接,「input timing not supported」,連門都不開,可是 Pico 2 W 送 1080p30 它就收。差別在我們的 pixel clock 是 75 MHz、一行 2222 個 pixel,跟標準的 74.25 MHz、2200 差了 1%。電腦螢幕覺得差不多就好,電視類的螢幕覺得差 1% 就是陌生人。下一版 bitstream 打算加上 HDMI 的 AVI infoframe,正式跟螢幕自我介紹「我是電腦畫面,不要裁」,再用板上的時脈產生器把 pixel clock 做成剛剛好的 74.25 MHz,大家都是標準人。
第二次:字有時候糊,有時候不糊
幾天後換 pico2w-tang-term 接同一台螢幕,字看起來糊糊的。可是只有有時候糊,一下清楚一下糊,像是螢幕自己有心情。字型是自己做的,第一個反應當然是懷疑字型、懷疑 scaling、懷疑 720p 被放大的時候是不是哪裡算錯了。又是板子先被叫去問話。
後來發現規律了:螢幕上一個 HDMI 輸入如果是 Google TV 播放器,切過來就糊;上一個如果是 PC,切過來就清楚。
所以是螢幕把上一個輸入的畫質處理整組帶過來。看影片用的那些銳利化、降噪、動態補償什麼的,Google TV 用完沒卸妝,直接套在我的文字畫面上,白底黑字被當成 4K 電影在修圖,不糊才怪。跟我們的字型一點關係都沒有,板子第二次被冤枉。
下次怎麼看
- 某台螢幕上「沒有提示、只有背景」,別的螢幕正常,先去找 overscan 或「點對點」的選項。
- 智慧螢幕跟電視會把非標準的 timing 當影片處理,裁邊、加畫質處理都有可能。能送標準 timing 就送標準的,不要讓它有機會發揮創意。
- 字糊糊的但不是每次都糊,先想想上一個輸入是什麼,可能是別人留下來的妝。
- 板子真的沒那麼容易壞,遙控器先按一按。
查板子查了半天,答案在遙控器上喔