<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>技訴 Blog</title>
        <link>https://blog.js.gripe/zh-TW/</link>
        <description>記錄技術實踐、網路服務、寫作與觀察。</description>
        <lastBuildDate>Sat, 02 May 2026 13:10:27 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-TW</language>
        <copyright>2026 技訴 Blog</copyright>
        <item>
            <title><![CDATA[OpenWrt QModem 下 RM502Q-AE 無法接收簡訊的排障與恢復：IMS、5G SA 與簡訊承載設定]]></title>
            <link>https://blog.js.gripe/zh-TW/posts/rm502q-ae-openwrt-qmodem-sms-ims-fix/</link>
            <guid>https://blog.js.gripe/zh-TW/posts/rm502q-ae-openwrt-qmodem-sms-ims-fix/</guid>
            <pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[一次真實排障記錄：QModem 頁面收不到簡訊，最後定位為中國移動 NR5G SA 下 IMS 未開啟；開啟 IMS 並重啟 RM502Q-AE 後，簡訊恢復接收。]]></description>
            <content:encoded><![CDATA[<p>這是一篇真實排障記錄：OpenWrt 上透過 QModem 管理 Quectel RM502Q-AE 時，QModem 簡訊頁面一直收不到簡訊。最後確認問題不在頁面讀取，也不是簡訊儲存已滿，而是在中國移動 NR5G SA 場景下 IMS 處於關閉狀態。開啟 IMS 並重啟模組後，簡訊恢復接收。</p>
<p>文中涉及身份類資訊均已脫敏；如果需要提到 CIMI/IMSI，只記錄為 <code>46007************</code> 或「已脫敏」。簡訊正文不記錄。</p>
<h2 id="1-背景與症狀" tabindex="-1">1. 背景與症狀</h2>
<p>環境很普通：OpenWrt 系統，QModem 管理 RM502Q-AE，AT 連接埠使用 <code>/dev/mhi_DUN</code>。模組資訊如下：</p>
<pre><code class="language-text">ATI
Quectel
RM502Q-AE
Revision: RM502QAEAAR13A04M4G

AT+QGMR
RM502QAEAAR13A04M4G_01.203.01.203
</code></pre>
<p>營運商為中國移動，網路曾駐留在 NR5G SA：</p>
<pre><code class="language-text">AT+QNWINFO
+QNWINFO: &quot;TDD NR5G&quot;,&quot;46000&quot;,&quot;NR5G BAND 79&quot;,721824
</code></pre>
<p>排障過程中也出現過 <code>NR5G BAND 41</code>。5G SA 註冊狀態最後正常：</p>
<pre><code class="language-text">AT+C5GREG?
+C5GREG: 2,1,...,11,...

AT+C5GREG?
+C5GREG: 0,1
</code></pre>
<p>原始症狀是 QModem 的簡訊頁面沒有任何簡訊。介面返回中 <code>msg</code> 為空，儲存能力看起來正常：</p>
<pre><code class="language-json">{
  &quot;msg&quot;: [],
  &quot;result&quot;: {},
  &quot;sms_capabilities&quot;: {
    &quot;mem1&quot;: &quot;MT&quot;,
    &quot;mem2&quot;: &quot;MT&quot;,
    &quot;mem3&quot;: &quot;MT&quot;,
    &quot;ME&quot;: { &quot;used&quot;: &quot;0&quot;, &quot;total&quot;: &quot;127&quot; },
    &quot;SM&quot;: {}
  }
}
</code></pre>
<h2 id="2-先確認不是-qmodem-頁面問題" tabindex="-1">2. 先確認不是 QModem 頁面問題</h2>
<p>第一步不是改設定，而是確認簡訊到底有沒有進入模組儲存。分別檢查 <code>ME</code>、<code>MT</code>、<code>SM</code>、<code>SR</code> 後，結果都為空：</p>
<pre><code class="language-text">AT+CPMS=&quot;ME&quot;,&quot;ME&quot;,&quot;ME&quot;
+CPMS: 0,127,0,127,0,127
OK

AT+CPMS=&quot;MT&quot;,&quot;MT&quot;,&quot;MT&quot;
+CPMS: 0,127,0,127,0,127
OK

AT+CPMS=&quot;SM&quot;,&quot;SM&quot;,&quot;SM&quot;
+CPMS: 0,50,0,50,0,50
OK

AT+CPMS=&quot;SR&quot;,&quot;SR&quot;,&quot;SR&quot;
+CPMS: 0,5,0,5,0,5
OK

AT+CMGL=4
OK
</code></pre>
<p><code>AT+CMGL=4</code> 返回 <code>OK</code> 但沒有任何 <code>+CMGL</code> 行。這一點很關鍵：如果 <code>ME</code>、<code>MT</code>、<code>SM</code>、<code>SR</code> 都為空，就不是 QModem 頁面只讀錯了 ME/SM，也不是儲存已滿，而是簡訊沒有進入模組可讀儲存。</p>
<h2 id="3-pdu-模式下-cmgl-的一個容易踩坑點" tabindex="-1">3. PDU 模式下 CMGL 的一個容易踩坑點</h2>
<p>排障初期曾看到：</p>
<pre><code class="language-text">AT+CMGL=&quot;ALL&quot;
ERROR
</code></pre>
<p>這很容易被誤判成簡訊功能異常。後續確認目前是 PDU 模式：</p>
<pre><code class="language-text">AT+CMGF?
+CMGF: 0

AT+CMGL=?
+CMGL: (0-4)
</code></pre>
<p>在 PDU 模式下，列出全部簡訊應使用：</p>
<pre><code class="language-text">AT+CMGL=4
</code></pre>
<p>而不是：</p>
<pre><code class="language-text">AT+CMGL=&quot;ALL&quot;
</code></pre>
<p><code>AT+CMGL=&quot;ALL&quot;</code> 更適合文字模式，也就是先執行 <code>AT+CMGF=1</code> 的場景。驗證碼、中文簡訊和 Unicode 內容更適合保留 PDU 模式，所以這裡最後使用 <code>AT+CMGF=0</code> 與 <code>AT+CMGL=4</code>。</p>
<h2 id="4-簡訊儲存urc-和通知設定" tabindex="-1">4. 簡訊儲存、URC 和通知設定</h2>
<p>排障中驗證或設定過這一組基礎簡訊設定：</p>
<pre><code class="language-text">AT+CMEE=2
AT+QURCCFG=&quot;urcport&quot;,&quot;all&quot;
AT+CSMS=1
AT+CMGF=0
AT+CPMS=&quot;MT&quot;,&quot;MT&quot;,&quot;MT&quot;
AT+CNMI=2,1,0,0,0
</code></pre>
<p>這些命令的作用可以這樣理解：</p>
<ul>
<li><code>AT+QURCCFG=&quot;urcport&quot;,&quot;all&quot;</code>：讓 URC 從所有可用 AT 連接埠輸出，避免 QModem 使用的連接埠和手動調試的 AT 口不一致，導致新簡訊通知看不到。</li>
<li><code>AT+CPMS=&quot;MT&quot;,&quot;MT&quot;,&quot;MT&quot;</code>：使用模組簡訊總視圖，避免簡訊落在 <code>ME</code> 或 <code>SM</code>，但讀取時看了另一邊。</li>
<li><code>AT+CNMI=2,1,0,0,0</code>：新簡訊儲存後，透過 <code>+CMTI</code> 通知終端。</li>
<li><code>AT+CMGF=0</code>：保持 PDU 模式，更適合驗證碼、中文簡訊和 Unicode 內容。</li>
</ul>
<p>如果選擇文字模式，才更適合使用：</p>
<pre><code class="language-text">AT+CMGF=1
AT+CMGL=&quot;ALL&quot;
</code></pre>
<h2 id="5-5g-sa-註冊正常但簡訊仍未進入儲存" tabindex="-1">5. 5G SA 註冊正常但簡訊仍未進入儲存</h2>
<p>當時 5G SA 註冊已經正常，但簡訊仍然沒有進入任何儲存。繼續檢查簡訊承載偏好：</p>
<pre><code class="language-text">AT+CGSMS?
+CGSMS: 1
</code></pre>
<p><code>CGSMS=1</code> 可以理解為偏向傳統 CS 域。對於目前中國移動 NR5G SA 場景，這並不是理想狀態。隨後設定為：</p>
<pre><code class="language-text">AT+CGSMS=2
OK
</code></pre>
<p><code>CGSMS=2</code> 可理解為 Packet domain preferred / PS preferred。這裡不要寫得過度絕對：不同營運商、不同韌體、不同註冊狀態下，簡訊承載策略可能不同。但在這次 NR5G SA 排障中，不應繼續讓簡訊承載偏向傳統 CS 域。</p>
<h2 id="6-關鍵發現ims-是關閉的" tabindex="-1">6. 關鍵發現：IMS 是關閉的</h2>
<p>真正的關鍵點來自 IMS 設定：</p>
<pre><code class="language-text">AT+QCFG=&quot;ims&quot;
+QCFG: &quot;ims&quot;,0,0
</code></pre>
<p>這表示 IMS 未開啟。隨後執行：</p>
<pre><code class="language-text">AT+QCFG=&quot;ims&quot;,1
OK
</code></pre>
<p>重啟模組後，簡訊恢復正常，可以接收簡訊。也就是說，在這次 RM502Q-AE 駐留中國移動 NR5G SA 網路的場景裡，簡訊恢復的關鍵動作不是清空儲存，也不是換 QModem 頁面讀取方式，而是開啟 IMS。</p>
<h2 id="7-修復步驟" tabindex="-1">7. 修復步驟</h2>
<p>核心修復命令如下：</p>
<pre><code class="language-text">AT+CMEE=2
AT+QCFG=&quot;ims&quot;,1
AT+CFUN=1,1
</code></pre>
<p>模組重啟後，建議重新設定簡訊相關參數：</p>
<pre><code class="language-text">AT+QURCCFG=&quot;urcport&quot;,&quot;all&quot;
AT+CGSMS=2
AT+CSMS=1
AT+CMGF=0
AT+CPMS=&quot;MT&quot;,&quot;MT&quot;,&quot;MT&quot;
AT+CNMI=2,1,0,0,0
</code></pre>
<p>本次實際結果是：開啟 IMS 並重啟後，QModem 可以收到簡訊。</p>
<h2 id="8-回滾步驟" tabindex="-1">8. 回滾步驟</h2>
<p>如果開啟 IMS 後出現註冊、撥號或網路異常，可以回滾：</p>
<pre><code class="language-text">AT+QCFG=&quot;ims&quot;,0
AT+CFUN=1,1
</code></pre>
<p>但本次故障的實際恢復動作是開啟 IMS，因此最後建議保留：</p>
<pre><code class="language-text">AT+QCFG=&quot;ims&quot;,1
</code></pre>
<p>如果需要回滾簡訊承載偏好，可以執行：</p>
<pre><code class="language-text">AT+CGSMS=1
</code></pre>
<p>不過這不推薦作為本次 NR5G SA 場景下的最終狀態，因為簡訊恢復後使用的是：</p>
<pre><code class="language-text">AT+CGSMS: 2
</code></pre>
<h2 id="9-qmodem-初始化後-at-命令建議" tabindex="-1">9. QModem 初始化後 AT 命令建議</h2>
<p>建議寫入 QModem 的「初始化後 AT 命令」：</p>
<pre><code class="language-text">AT+QCFG=&quot;ims&quot;,1
AT+QURCCFG=&quot;urcport&quot;,&quot;all&quot;
AT+CGSMS=2
AT+CSMS=1
AT+CMGF=0
AT+CPMS=&quot;MT&quot;,&quot;MT&quot;,&quot;MT&quot;
AT+CNMI=2,1,0,0,0
</code></pre>
<p>這裡不依賴 <code>AT&amp;W</code>。實際排障中，<code>AT&amp;W</code> 沒有穩定返回 <code>OK</code>，而 OpenWrt/QModem 的使用方式也更適合把關鍵初始化命令交給 QModem 在啟動後執行。這樣即使 profile 持久化行為不確定，重啟後仍能把簡訊相關狀態拉回預期設定。</p>
<h2 id="10-後續如何判斷載波聚合是否觸發" tabindex="-1">10. 後續：如何判斷載波聚合是否觸發</h2>
<p>簡訊恢復後，又繼續看了載波聚合狀態：</p>
<pre><code class="language-text">AT+QCAINFO
+QCAINFO: &quot;PCC&quot;,721824,6,&quot;NR5G BAND 79&quot;,347

AT+QNWINFO
+QNWINFO: &quot;TDD NR5G&quot;,&quot;46000&quot;,&quot;NR5G BAND 79&quot;,721824

AT+QENG=&quot;servingcell&quot;
+QENG: &quot;servingcell&quot;,&quot;NOCONN&quot;,&quot;NR5G-SA&quot;,&quot;TDD&quot;,460,00,...,721824,79,...

AT+QCFG=&quot;lteca&quot;
ERROR
</code></pre>
<p><code>QCAINFO</code> 只有 <code>PCC</code>，沒有 <code>SCC</code>，說明查詢當下沒有觸發載波聚合。但 <code>QENG=&quot;servingcell&quot;</code> 顯示 <code>NOCONN</code>，代表當時處於空閒或未連線態，不能據此判斷模組或網路不支援 CA。</p>
<p>正確判斷方法是在測速或大流量下載過程中，反覆執行：</p>
<pre><code class="language-text">AT+QCAINFO
AT+QENG=&quot;servingcell&quot;
</code></pre>
<p>如果出現 <code>SCC</code>，才說明 CA 被網路側調度。<code>AT+QCFG=&quot;lteca&quot;</code> 返回 <code>ERROR</code>，只說明目前韌體不支援這個設定項，或沒有開放這個 <code>QCFG</code> 項，不等於 CA 被關閉。</p>
<p>對於 NR5G SA 下的 NR CA，更多取決於網路側調度、基地台設定、套餐、信號、頻段組合和是否鎖頻。不要為了測試 CA 盲目寫未知 AT 命令，更不要把已經驗證有效的 IMS 關閉。</p>
<h2 id="11-結論" tabindex="-1">11. 結論</h2>
<p>這次故障的結論很明確：</p>
<ul>
<li>不是簡訊儲存已滿。</li>
<li>不是 QModem 只讀錯 <code>ME</code> 或 <code>SM</code>。</li>
<li><code>ME</code>、<code>MT</code>、<code>SM</code>、<code>SR</code> 都為空，說明簡訊沒有進入模組可讀儲存。</li>
<li>目前網路是中國移動 NR5G SA，5G 註冊狀態正常。</li>
<li>簡訊恢復的關鍵動作是開啟 IMS：<code>AT+QCFG=&quot;ims&quot;,1</code>，然後透過 <code>AT+CFUN=1,1</code> 重啟模組。</li>
<li>重啟後可以接收簡訊。</li>
<li>後續建議保留 IMS 開啟，並在 QModem 初始化後 AT 命令中固化簡訊相關設定。</li>
<li>關於 CA：查詢時 <code>QCAINFO</code> 只有 <code>PCC</code>，說明當時沒有觸發 CA；<code>AT+QCFG=&quot;lteca&quot;</code> 返回 <code>ERROR</code> 不代表 CA 不能用，只代表該設定項不可用。正確方式是在大流量期間觀察 <code>QCAINFO</code> 是否出現 <code>SCC</code>。</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[技訴 Blog 正式啟用]]></title>
            <link>https://blog.js.gripe/zh-TW/posts/welcome/</link>
            <guid>https://blog.js.gripe/zh-TW/posts/welcome/</guid>
            <pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[這裏會記錄技術實踐、網絡服務、寫作與觀察，也留下一些問題被解決前後的痕跡。]]></description>
            <content:encoded><![CDATA[<p>技訴 Blog 正式啟用。</p>
<p>這裡會放一些慢慢冩下來的內容：技術實踐、網絡服務、工具使用、問題排查，以及日常觀察。它不追求熱鬧，更像一張持續更新的工作颱，把遇到的問題、走過的路徑和最後留下的判斷整理出來。</p>
<p>第一篇文章先作爲一個小小的起點。接下來，文章會按主題歸檔，也會保留標籤，方便之後從同一個問題一路追到相關背景。</p>
<p>願每一次記錄都讓下一次處理問題時少繞一點路。</p>
]]></content:encoded>
        </item>
    </channel>
</rss>