ttyUSB0串口當機鎖死,需要電腦重啟
我已經在堆棧溢出上發布了這個問題,但是在查找了類似的問題後,我意識到這是一個更好的地方(週日 10 小時後它只有 8 次瀏覽)。如有必要,我會刪除這一個或另一個。
我遇到了一個奇怪的問題,我似乎找不到其他有類似問題的人。我正在使用螢幕(sudo screen /dev/ttyUSB0 115200)通過 USB 連接到類似於 Zedboard 或 Raspberry Pi 的設備。
在連接後的隨機時間點,螢幕將變得無響應。通常關閉設備也會終止螢幕會話,但是當螢幕變得無響應時,關閉設備不會執行任何操作。擺脫凍結螢幕的唯一方法是強制關閉終端。
嘗試重新連接到新終端中的設備時,螢幕保持凍結狀態,需要再次強制關閉。screen –list 看不到這些螢幕,但通過搜尋螢幕程序(ps ax | grep ttyUSB0),可以找到螢幕,如果嘗試重新連接,則會找到多個螢幕。如果有多個,則可以輕鬆殺死其他人(sudo kill 1234),但是當殺死第一個螢幕程序時,程序類型從 Ss 變為 Ds,我讀過這意味著殺死將不起作用,使用者只需要等待。不幸的是,它永遠不會關閉。
此時,當嘗試使用相同的命令重新連接到設備時,螢幕頂部快速連續列印以下錯誤:“Cannot open line ‘/dev/ttyUSB0’ for R/W: open() blocked ,中止了。” (大約 0.5 秒)然後是“抱歉,找不到 PTY。”。然後螢幕自動關閉。此時,我嘗試手動刪除 /dev 中的 ttyUSB0 條目並使用 mknod 重新創建它,但沒有幫助。此時我所能做的就是硬重置電腦。
我已經嘗試使用 minicom 並且問題仍然存在(使用一定量後它會凍結)。一旦凍結,如果不重置電腦,就無法重新連接。我也在電腦上嘗試過不同的 USB 埠。
我目前使用的是 CentOS 6.5,我目前無法切換我的作業系統,所以我希望這不是問題。我嘗試通過虛擬機(VirtualBox Ubuntu14.04.2)連接到設備,實際上並沒有因為大量使用而崩潰,但我認為這可能只是偶然,因為這不應該有所作為。
理想情況下,我想弄清楚如何解決問題,但我也可以解決問題,而無需關閉並打開電腦。
我找到了一個臨時解決方案,這可能是唯一可能的解決方案。它可能會揭示實際原因,所以我幾天內不會接受我自己的答案,但在那之後我會接受的。
通過虛擬機連接到設備,雖然崩潰同樣頻繁,但可以通過禁用和重新啟用主作業系統和虛擬機之間的連結來強制關閉連接(在這種情況下,通過點擊 USB 連接按鈕並禁用/重新啟用 UART 設備)。該解決方案的意思是,每當發生崩潰時,只需在控制台中進行簡單的斷開連接、重新連接和“向上箭頭,輸入”即可解決問題,並且只需幾秒鐘。這絕對是一種創可貼解決方案,但我不確定是否存在更好的解決方案。