現行的 Tasmota 穩定版是 15.6.0(代號 Sylvie,2026 年 8 月 25 日發布)。
這篇從「打開網頁查出自己現在是哪一版」開始,做到「升完、五項檢查全過、Home Assistant 重新認得它」。中間會分岔成 OTA 與 USB 兩條路,兩條都寫完,不會叫你去看別篇。
每一步都有「你會看到什麼」。做完第三步要能自己確認第三步成功了,才走第四步。看不到預期的輸出就停在那裡,往下走只會讓你分不清是哪一步壞的。
做完這篇你會有什麼
一台跑在 15.6.0 的裝置,Wi-Fi、MQTT、GPIO 設定全部還在
兩份備份:網頁按一下就有的 .dmp,加一份出事時看得懂、貼得回去的文字檔
升級失敗時看得懂網頁上那一行字,知道下一步該做什麼
會用 USB 刷一台本來不是 Tasmota 的裝置(含零件清單與逐腳位接線)
Home Assistant 裡重新出現這台裝置,而且是掛在 Tasmota 整合底下不是 MQTT 底下
先講誰不該升
官方升級文件的第一句話是「If it ain't broke, don't fix it」,東西沒壞就不要動。Tasmota 不會強迫你更新,舊版繼續跑不會有人來關掉它。
真的值得升的是這四種:
你手上是 ESP8266 加 PZEM 電力量測,而且現在跑 15.5.0 —— 這個組合在 15.5.0 會當機重開無限循環,15.6.0 的修正清單裡就寫著這一條。這種要馬上升
你要用新硬體 —— 新的感測器型號、新的 ESP32 變體(C5、C6、P4),舊韌體根本不認得
你想把介面換成繁體中文 —— Tasmota 有官方的繁體中文版本,下面「新版用得到的東西」會講怎麼換
你已經兩年沒升了 —— 拖越久中間要走的中繼站越多,而且八年前的版本現在已經不能直升
反過來說,一台在牆上跑了三年、每天準時開關燈、從來沒出過事的 Sonoff,沒有理由去動它 。
Tasmota 大約兩個月出一版 (15.1.0 到 15.6.0 之間,除了一次隔四個月,其餘都是兩個月)。不用每版跟,一年升一次很夠。
---
步驟 1:查出你現在是哪一版、哪一顆晶片、多大的快閃記憶體
這三個數字決定後面全部的路線。先查完再決定要做什麼。
用瀏覽器打開裝置的 IP(不知道 IP 就去路由器的 DHCP 清單找 tasmota 開頭的主機名稱)。首頁最底下那一行就會寫版本,但那不夠,我們要三個數字。
點主選單的「控制台」(Console) ,在最下面的輸入框打:
你會看到什麼
控制台會多出一行(時間戳記和 MAC 會不一樣):
20:14:03.271 RSL: stat/tasmota_3D5E26/STATUS2 = {"StatusFWR":{"Version":"15.6.0(tasmota)","BuildDateTime":"2026-08-25T11:23:41","Boot":31,"Core":"2_7_8","SDK":"2.2.2-dev(38a443e)","CpuFrequency":80,"Hardware":"ESP8266EX","CR":"465/699"}} 複製代碼
要記下來的有兩個:
Version —— 前面那個「15.6.0」是版本,括號裡的「tasmota」是你刷的是哪一種版本(tasmota / tasmota-sensors / tasmota-lite / tasmota-ir…)。升級時要挑同一種,不然功能會突然少掉
Hardware —— 「ESP8266EX」或「ESP8285」是 ESP8266 家族;「ESP32」「ESP32-C3」「ESP32-S3」這些是 ESP32 家族。兩家的升級方式完全不同
接著打第二個指令:
你會看到什麼
20:14:47.882 RSL: stat/tasmota_3D5E26/STATUS4 = {"StatusMEM":{"ProgramSize":651,"Free":352,"Heap":26,"ProgramFlashSize":1024,"FlashSize":1024,"FlashChipId":"1440C8","FlashFrequency":40,"FlashMode":"DOUT", ... 複製代碼
這裡有兩個關鍵數字,單位都是 KB:
FlashSize —— 1024 就是 1MB 的板子(絕大多數的 Sonoff Basic、Sonoff Mini、雜牌插座都是),4096 是 4MB
Free —— 這是整篇最重要的一個數字。 它是「還能拿來收新韌體的空位」。這個數字比你要刷的檔案小,OTA 就會失敗
為什麼會這樣 :OTA 的做法是先把新韌體完整寫進一塊空白區域,確認沒問題才換過去 。所以升級的那一刻,快閃記憶體裡要同時放得下新舊兩份韌體。1MB 的板子總共就 1024 KB,舊的那份已經佔掉六百多,剩下的才是 Free。
換算標準 (2026-09-25 從官方伺服器實際量到的檔案大小):
tasmota.bin.gz 458 KB ← ESP8266 升級用這個 tasmota.bin 651 KB ← 未壓縮,通常塞不下 tasmota-minimal.bin.gz 257 KB ← 空間不夠時的中繼站 tasmota32.bin 2131 KB ← ESP32 tasmota32-safeboot.bin 782 KB ← ESP32 的中繼站 複製代碼
上面那台 Free 只有 352 KB,小於 458 KB,所以它直接 OTA 一定會失敗 。這不是故障,是 1MB 板子的正常狀況,步驟 4 會處理。
看不到控制台這個選單 ,代表你現在跑的是 minimal 版韌體(有人升級升到一半就停在那裡了)。主選單最上面會有一行紅字警告。這種情況直接跳到步驟 4-4 的第二段。
---
步驟 2:對號入座,決定走哪一條
用步驟 1 查到的 Version 對照上圖。這裡把最容易出事的那一條再講清楚。
Version 在 8.1.0 以前的,不能直接升到 15.6.0。
官方升級文件的原話是全大寫的一句:「DO NOT ATTEMPT TO UPGRADE VERSIONS PRIOR TO v7.x STRAIGHT TO THE CURRENT VERSION」。
原因是 8.1.0 那一版把設定在快閃記憶體裡的擺放位置整個重排過 。舊版的設定區長什麼樣子,新韌體已經不認得了。硬刷上去的結果是設定被判定無效,裝置開機後變成全新的、什麼都沒有,而且你的 .dmp 備份也吃不回去。
⚠ 這一條很容易被誤會成「15.6.0 新加的限制」 ,因為每一版的發行說明開頭都會再寫一次「This version removes support for direct migration from versions before v8.1.0」。拿去跟前面三十幾版比對會發現那一段是逐字相同的固定樣板 ,真正加上限制的是 2020 年的 8.1.0。所以這不是「趕快升免得以後不能升」的理由 —— 已經卡住的早就卡住了。
要走中繼站:
每一站的做法都跟步驟 4 一樣(設 OtaUrl、Upgrade 1),只是網址換成該站的。每一站升完都要等它真的重開機、網頁進得去、Status 2 回報的版本真的變了,才走下一站。 網址照抄:
OtaUrl http://ota.tasmota.com/tasmota/release_5.14.0/sonoff.bin OtaUrl http://ota.tasmota.com/tasmota/release_6.7.1/sonoff.bin OtaUrl http://ota.tasmota.com/tasmota/release-7.2.0/tasmota.bin OtaUrl http://ota.tasmota.com/tasmota/release-8.5.1/tasmota.bin OtaUrl http://ota.tasmota.com/tasmota/release-9.1.0/tasmota.bin.gz OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz 複製代碼
注意 5.14.0 和 6.7.1 那兩行用的是底線(release_),7.2.0 之後才是減號(release-)。 這不是筆誤,官方發行說明特別註明了:舊版的網址解析不吃減號。
老實說,如果你只有一兩台這麼舊的裝置,拆開來用 USB 重刷(步驟 7)通常比走六站快,而且不會中途卡死 。走中繼站只在「裝置裝在牆裡拆不下來」時才划算。
---
步驟 3:備份,兩份都要
3-1:網頁備份(三十秒)
主選單 → 設定(Configuration) → 備份設定(Backup Configuration) 。瀏覽器會下載一個檔案,名字是 `Config_主機名稱_版本.dmp`,例如:
Config_tasmota_3D5E26_15.6.0.dmp 複製代碼
你會看到什麼 :檔案大小在 4 KB 上下(ESP8266)或 8 KB 上下(ESP32)。0 KB 就是失敗,重按一次。
這是設定區的二進位傾印,而且是混淆過的,用記事本打開只會看到亂碼,不能手改 。
⚠ 這裡有一個到處流傳、但方向是反的說法:「.dmp 只能還原回同一個版本」。
實際上 Tasmota 還原 .dmp 時只檢查三件事:檔案的 CRC 對不對、來源版本是不是 8.1.0 之後、以及晶片家族符不符合 。通過之後它會刻意保留備份裡的舊版號,讓裝置重開機時自己跑一次設定遷移。
所以真正的硬限制是「同一顆晶片家族」,不是「同一版」 :
ESP8266 的 .dmp 絕對不能 還原到 ESP32 上
ESP32-C3 的也不能還原到 ESP32-S3 上
但是 9.x 時代的 .dmp 還原到 15.6.0 是可以的
檔案不合的時候網頁會回「檔案無效(File invalid)」,很明確。
3-2:文字備份(出事時唯一看得懂的東西)
.dmp 的問題不是還原不了,是它壞掉的時候你連裡面有什麼都看不到 。所以第二份要是人看得懂的。
最省事的做法是把三個指令的輸出存成記事本:
Backlog Status 0; Template; Rule1 複製代碼
你會看到什麼 :控制台會跑出很長的三段 JSON。`Status 0` 是完整狀態(含 MQTT 位址、Topic、Wi-Fi SSID),`Template` 是 GPIO 腳位設定,`Rule1` 是你寫的規則。全部選起來複製到記事本,檔名寫上日期。
比較正式的做法 是用官方工具 decode-config,它會把 .dmp 轉成可讀的 JSON。到 github.com/tasmota/decode-config/releases 下載(Windows 抓 decode-config_win64.exe),在下載資料夾開命令提示字元:
decode-config_win64.exe --source 192.168.1.50 --backup-file Config-@f 複製代碼
把 IP 換成你的。`@f` 會自動換成裝置的 FriendlyName。
你會看到什麼 :資料夾裡多出一個 .json,用記事本打開長這樣:
{ "cfg_holder": 4617, "devicename": "客廳燈", "friendlyname": ["客廳燈"], "mqtt_host": "192.168.1.10", "topic": "livingroom_light", "template": {"NAME":"Sonoff Basic","GPIO":[17,255,255,255,255,0,0,0,21,56,0,0,0],"FLAG":0,"BASE":1}, ... } 複製代碼
有裝置名稱、有 MQTT 位址、有 template,這份就成功了。 程式回「Login failed」是因為你設了網頁密碼,指令要加 `--username admin --password 你的密碼`。
還原的指令是:
decode-config_win64.exe --source 192.168.1.50 --restore-file Config-客廳燈.json 複製代碼
3-3:免費多一份的「對帳表」
15.5.0 新增了一個指令,可以把所有被改過的 SetOption 一次列出來:
你會看到什麼
20:22:10.443 RSL: stat/tasmota_3D5E26/RESULT = {"SetOptionSet":[0,3,15,56,57,59,128],"SetOption32_49":[40,5,200,0,1,0,6,0,0,60,90,255,0,40,0,0,0,0]} 複製代碼
SetOptionSet 那個陣列就是「目前被設成 1 的所有開關編號」。 複製到記事本存起來,升完再打一次比對——數字少了哪一個,就是那個設定被洗掉了。
Tasmota 的設定出問題時通常不報錯,只是某個功能安靜地不動了。有這張對帳表,找起來是五秒鐘的事。
---
步驟 4:OTA 升級(ESP8266)
ESP8266 就是 Sonoff Basic、Sonoff Mini R2、Sonoff S31、大部分的雜牌 Wi-Fi 插座。
4-1:先把 OTA 網址設好
控制台貼這一行:
Backlog OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz; Restart 1 複製代碼
`Backlog` 是「一行下多個指令」,用分號隔開。
你會看到什麼 :裝置重開,網頁大約 10 秒後回得來。再打 `OtaUrl` 不帶參數確認:
20:30:02.117 RSL: stat/tasmota_3D5E26/RESULT = {"OtaUrl":"http://ota.tasmota.com/tasmota/release/tasmota.bin.gz"} 複製代碼
三個地方最容易打錯 :
一定要用 .bin.gz 不要用 .bin 。壓縮版 458 KB,未壓縮 651 KB,差的這 193 KB 常常就是成功跟失敗的分界。裝置會自己處理解壓縮
網址是 http 不是 https ,ESP8266 的 OTA 不支援 https
OtaUrl 有 100 個字元的上限 。自己架伺服器時路徑不要太深
如果你用的不是標準版 (步驟 1 的 Version 括號裡不是「tasmota」),要把檔名換成對應的。例如原本是 tasmota-sensors,網址就改成 `.../release/tasmota-sensors.bin.gz`。換錯會直接掉功能,而且不會有錯誤訊息,只是某個感測器從此讀不到。
4-2:開始升級
你會看到什麼 :控制台會先回一行「我要從哪裡抓什麼」——
20:31:14.512 RSL: stat/tasmota_3D5E26/RESULT = {"Upgrade":"Version 15.4.0 from http://ota.tasmota.com/tasmota/release/tasmota.bin.gz"} 複製代碼
(那個 15.4.0 是目前 的版本,不是要升上去的版本,不要被騙。)
30 到 60 秒之後,成功的話會再跑出一行:
20:31:48.771 RSL: stat/tasmota_3D5E26/UPGRADE = {"Upgrade":"Successful. Restarting"} 複製代碼
這一行是唯一可靠的成功訊號。 失敗的話同一個位置會是 `{"Upgrade":"Failed ..."}`,後面接著實際的錯誤。
⚠ 順帶一提:沒有 `Upgrade 0` 這個指令。 官方只定義 `1`、`2`、和「一個版本號」三種參數。打 `Upgrade 0` 會得到:
{"Upgrade":"1 or >15.4.0 to upgrade"} 複製代碼
意思是「請打 1,或者打一個比 15.4.0 大的版本號」。網路上寫 `Upgrade 0` 的教學是誤傳。
裝置重開後會斷線 20 到 60 秒。重新整理網頁,打 `Status 2`:
{"StatusFWR":{"Version":"15.6.0(tasmota)","BuildDateTime":"2026-08-25T11:23:41", ... 複製代碼
Version 變成 15.6.0 就是成功了 ,跳到步驟 6 做健康檢查。
4-3:失敗的話,先看那行字是哪一種
三種訊息長得很像,但處理方式完全不同:
「可用空間不足」(Not enough space) —— 就是步驟 1 那個 Free 數字不夠。往下看 4-4
「上傳緩衝區不符」(Upload buffer miscompare) —— 同樣是空間問題,但先確認你用的是 .bin.gz 不是 .bin。已經是 gz 了還出現,往下看 4-4
「軟體刷入的大小超出記憶體實際大小」(Program flash size is larger than real flash size) —— 這個不是空間不夠,是你拿了 4M 版本要刷 1M 的板子 。檢查網址裡有沒有「-4M」,有就拿掉
還有一種是完全沒有錯誤訊息、裝置直接重開然後版本沒變 。那通常是網址打錯(抓不到檔案)。把網址整串複製到瀏覽器網址列,應該要開始下載一個檔案 ;顯示 Not Found 就是網址錯了。
⚠ 有一個特別會中的:官方升級文件裡到現在還寫著 `tasmota-minimal.bin`,但那個檔案已經下架了 (2026-09-25 實際去抓是 404,只剩 `.bin.gz` 版本)。其他每一種版本都同時有 .bin 和 .bin.gz,只有 minimal 這一支例外。照文件抄會得到一個永遠抓不到的網址。
4-4:兩段式升級(1MB 板子幾乎都要走這一步)
原理很單純:先刷一個很小的 minimal 版把位置空出來,再從那裡刷完整版。
第一段 :
Backlog OtaUrl http://ota.tasmota.com/tasmota/release/tasmota-minimal.bin.gz; Upgrade 1 複製代碼
你會看到什麼 :一樣的上傳過程,裝置重開。這次進網頁會發現主選單最上面多了一行紅字警告,而且設定、控制台那些選單通通不見了 ——這是對的,minimal 版本來就只留 OTA 功能。
第二段 (在 minimal 的網頁上):主選單 → 韌體升級(Firmware Upgrade) → 上面那個「Upgrade by web server」的欄位改成:
http://ota.tasmota.com/tasmota/release/tasmota.bin.gz 複製代碼
按 Start upgrade ,等 2 到 5 分鐘。
你會看到什麼 :裝置重開之後,紅字警告消失,選單全部回來,Status 2 是 15.6.0,而且你的 Wi-Fi 和 MQTT 設定都還在 (minimal 不會動設定區)。
這一步有兩個地雷,踩了就得拆殼接線 :
不要停在 minimal。 官方文件寫「This version should NOT be used for initial installation」。minimal 裡面沒有規則引擎、沒有計時器、沒有 Home Assistant 探索,你的插座會變成一塊只會做韌體升級的磚
絕對不要連續刷兩次 minimal。 官方原文:「Do not upgrade from minimal to minimal version. It will most likely fail at some point and will require flashing via serial.」中間一定要先回到完整版
其實多數情況不用手動做兩段。 Tasmota 的 OTA 自己會判斷:空間不夠時,它會把網址裡的檔名自動換成「-minimal」再抓一次,刷完再自己抓完整版。上面這一節是給「自動的那次失敗了」用的。
⚠ 但「網頁上傳檔案」那一種不會自動做。 韌體升級(Firmware Upgrade)頁面有兩個欄位:
Upgrade by web server (填網址那個)—— 空間不夠時會自動先裝 minimal,全自動
Upgrade by file upload (選本機檔案那個)—— 不會自動做中繼步驟 。檔案超過 500 KB 就要自己先傳 minimal
---
步驟 5:OTA 升級(ESP32 系列)
ESP32、ESP32-C3、ESP32-S3、ESP32-C6 這些走的是另一套機制,叫 safeboot。
先講它是什麼,不然下面的指令看起來會很怪。 ESP32 原本的做法是把 4MB 快閃記憶體切成兩塊各 1856 KB 的韌體區,一塊在跑、一塊收新韌體。好處是升壞了還能開回舊的,壞處是永遠有一半的空間在閒置 。
Tasmota 從 12 版起改成 safeboot 版面:一塊 832 KB 的小分割區放「只會做 OTA 的迷你韌體」,剩下 2880 KB 全部給正式韌體。多出來的那一千 KB 就是為什麼 ESP32 版塞得進藍牙、Matter、Berry 這些東西。
而現在的 tasmota32.bin 是 2131 KB,已經超過舊版面那塊 1856 KB 的分割區了 ——這就是「舊 ESP32 裝置升不上去」的根本原因,不是網路問題。
5-1:設定與升級
Backlog OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin; Restart 1 複製代碼
三件事跟 ESP8266 不一樣:
路徑是 tasmota32 不是 tasmota
ESP32 可以用 https
絕對不要加 .gz —— 官方根本沒有為 ESP32 提供壓縮版韌體(那個目錄裡只有 .bin 和 .factory.bin)。加了就是 404
然後:
你會看到什麼 :如果你這台已經是 safeboot 版面,控制台會跟 ESP8266 一樣跑出 `{"Upgrade":"Version ... from ..."}`,最後是 `{"Upgrade":"Successful. Restarting"}`。
如果還是舊版面(放不下 2131 KB),控制台會出現一行重新啟動,然後裝置自己重開進 safeboot:網頁會變成一個很陽春的畫面,標題還是 Tasmota 但只剩韌體升級功能 ,接著它會自己再抓一次完整韌體。整個過程會重開兩次,前後大概三分鐘。這時候不要拔電。
5-2:卡在 safeboot 沒有自己往下走
在 safeboot 的網頁上,主選單 → 韌體升級(Firmware Upgrade)→ 網址欄填:
https://ota.tasmota.com/tasmota32/release/tasmota32.bin 複製代碼
按 Start upgrade。
也可以用指令切回去(前提是另一塊分割區裡還有可用的韌體):
這個指令是 ESP32 專用的「存好設定並重開進 safeboot」,反過來用也行。
5-3:想直接走兩段
這是 ESP32 專用的參數,會照你的 OtaUrl 自動推算出 safeboot 的檔名(`tasmota32.bin` 變成 `tasmota32-safeboot.bin`),下載完重開進 safeboot。之後再照 5-2 刷完整版。
你會看到什麼 :控制台回一行
回的是這個字串才代表它接受了。 如果回的是 `{"Upgrade":"1 or >15.x.x to upgrade"}`,代表你這台的分割區狀況不符合(例如已經在 safeboot 裡,或者它本來就是雙分割區版面),不需要做這一步。
⚠⚠ 千萬不要自己把 `-safeboot.bin` 的網址填進「一般的」韌體升級欄位當成正式韌體刷。 它不是一個可以獨立運作的韌體——官方文件明講它「不儲存設定、也不支援初次 Wi-Fi 設定」。當成正式韌體刷進去,裝置就卡在一個沒有設定、沒有 Wi-Fi 設定介面的畫面裡。要用它只能透過 `Upgrade 2`,讓 Tasmota 自己把它放進正確的分割區。
你會看到什麼(確認版面真的換過來了) :升完打 `Status 4`,看 `ProgramFlashSize`:
舊版面:約 1856 safeboot 版面:約 2880 複製代碼
這個數字變大,就代表分割表真的重建了。 沒變大的話,下次出更大的韌體時會再卡一次。
---
步驟 6:升完之後的五項健康檢查
五項全過才算升完。 少做任何一項,壞掉的地方通常要好幾天後才會被發現。
檢查 1:版本真的變了
Version 要是 `15.6.0(tasmota)`。括號裡的字也要跟升級前一樣 ——如果升級前是 `(tasmota-sensors)` 現在變成 `(tasmota)`,代表你刷錯版本了,感測器驅動少了一批。重刷正確的檔名即可,設定不會掉。
檢查 2:沒有卡在 minimal
打開網頁首頁。最上面不應該有紅字警告,左邊選單要看得到「設定(Configuration)」「資訊(Information)」「韌體升級(Firmware Upgrade)」「控制台(Console)」四項。 少任何一項就是還在 minimal,回步驟 4-4 的第二段。