Date: 09/10/2026 11:13
OS: EndeavourOS x86_64(Arch)
Kernel: Linux 7.2.3-arch1-2
Packages: Virtualbox 7.2.16-1(x86_64)
Repository: Extra(Pacman)
虛擬機: Windows 10
虛擬機命名: Windows10
狀況:我的手提電話系統出現了問題,我必須進行深度刷機。如MTK深度刷機、驍龍9008刷機等,有些工具和包,它只可以從Windows中啓動。說實話,Wine不現實,而我剛剛好有x86主機,只可惜,它是Arch。我並不喜歡Windows,日常使用也讓我很難適應。所以,用虛擬機吧!
于是,問題就出現了
問題:因爲我手機的設計,深度刷機只會停留一會,完全只是一會,甚至沒有2s時間我感覺。並且,我的Linux確實收到串口信號,但是非常令人感到尷尬的是:我的Linux並不會因爲一部串口設備(深度刷機模式下)接入,就播報聲音提示我,同時,手機也不會有任何反饋,不會震動,不會亮屏。並且它停留深度刷機時間之少,很快就會滑入 Fastboot Mode 以至於,我根本不知道我到底有沒有到達過「深度刷機」模式。
解決
監聽連接
讓我們編寫一個 Shell Script,讓 Linux 輸出一會接入的「串口設備(處於深度刷機下的手提電話)」。
for i in $(seq 1 120); do
d=$(lsusb | grep -i '0e8d') && { echo "$d"; ls /dev/ttyACM*; break; }
sleep 0.5
done
上面的腳本會實時抓取設備,因爲握手只有幾百毫秒,到一秒,不通過腳本,你幾乎看不到它。 但是值得注意的是 0e8d ,這個並非隨意填寫的。這是因爲我的手機是 MTK 晶片的
- fastboot:VID/PID 常見
18d1:d00d(Xiaomi/Google) - Preloader / BROM:這是 MTK 的「深度刷機模式」,VID
0e8d。 - MTK 沒有驍龍那種 EDL Mode,所以
fastboot oem edl/reboot-edl在 MTK 晶片手機上執行必然會返回unknown command執行上面的 Script ,抓到0e8d:0003+ 新增/dev/ttyACM1就是進入了 Preloader 其它有用命令:
fastboot devices # 列出連接的設備
fastboot getvar all # 看 unlocked / secure / product / 分區槽位
fastboot oem poweroff # 在 fastboot 下斷電關機
但是,很尷尬的是,即便它連接了,你依舊無法通過虛擬機Device找到USB設備,並將其接入Windows虛擬機。但是,我們假設它可以被找到並接入。但是別忘了,它大概2s後就會斷開深度模式,之後可能跳到Fastboot,所以,即便它可以被找到,你幾乎也沒有時間去掛載、接入Windows虛擬機。
連接後,自動接入Windows虛擬機
我們需要讓它自動連接進 Windows 虛擬機。 做法:給 VM 加多條 USB 過濾器,覆蓋各個模式的 VID/PID。(需要先關停你的虛擬機)
# 這裡寫的Windows10,是因爲我給我的虛擬機起名是Windows10(無空格)
# 並非因爲它是 Windows 10 版本虛擬機。(它也的而且確是Win10)
VBoxManage controlvm "Windows10" poweroff
# 覆盖三种身份
VBoxManage usbfilter add 0 --target "Windows10" --name "MTK Preloader BROM" --vendorid 0e8d
VBoxManage usbfilter add 1 --target "Windows10" --name "Phone Fastboot" --vendorid 18d1 --productid d00d
VBoxManage usbfilter add 2 --target "Windows10" --name "Phone ADB MTP" --vendorid 2717
# 验证
VBoxManage showvminfo "Windows10" --machinereadable | grep -i USBFilter
必須保証你的 VirtualBox 的進程帶 vboxusers 組,否則 list usbhost 是空的、抓不到手機的。 甚至你連普通的 U盤、USB設備 都無法看到並掛載,如果你想知道如何做,請閱讀上一篇文章「【VirtualBox】Linux 使用 Virtual-Box 安裝的虛擬機找不到可以掛載的USB設備」。
VBoxManage list usbhost | grep -iE 'Product|State' # 能看到手机 = 权限 OK
之後打開你的虛擬機,過濾器會在開機時自動把手機 grab 入虛擬機。
Done. 開始刷機
做完上述的事情後,你在你的 Windows 虛擬機打開設備管理器(已經打上了手機的驅動情況下),手機接入電腦,進入深度刷機模式,此時你的虛擬機的設備管理器應該會刷新,出現一個串口設備,並寫出來是 MTK 的設備(大同小異)。但是很快又會消失,這是正常的。看完上面的內容你會知道這是正常的。 進行下述操作,你必須搞清楚。你的PC USB接口沒問題、你的線纜沒問題、你的手提電話接口沒問題。因爲它和深度模式下的快速退出有時令人難以分清。刷機過程,深度模式是不會自動退出的,但因爲客觀條件斷開,會變成黑磚。 所以這個時候,在刷機軟件(Download APP),選好包,手機接入Windows後,Download App 會識別出來,馬上點擊Download。燒寫就會開始,此時的手機也將不會斷開。
完畢後,開機。你需要等待一段時間,手機才會開機完成。深度刷機後,它在開機時,需要更多時間。但是超過30min,請考慮是不是出問題了。
