系列文章目录:本文是"骁龙移动平台双卡双待DSDS的技术内幕"系列的第四篇,深入剖析DSDS最核心的硬件约束问题——RF资源共享与Tune-Away调度。
1. 为什么DSDS需要Tune-Away?
1.1 硬件约束
在DSDS架构中,两张SIM卡共享同一套射频前端(RF Front End):
┌──────────────────────────────────────────┐ │ 共享 RF 前端硬件 │ │ │ │ ┌──────┐ ┌──────┐ ┌──────────────┐ │ │ │ PA │ │ LNA │ │ Antenna Tuner│ │ │ │(功放) │ │(低噪放)│ │ (天线调谐) │ │ │ └──┬───┘ └──┬───┘ └──────┬───────┘ │ │ │ │ │ │ │ └──────────┼───────────────┘ │ │ │ │ │ ┌──────▼──────┐ │ │ │ RF Switch │ ◄── 射频开关 │ │ │ (天线开关) │ (切换频段) │ │ └──────┬──────┘ │ │ │ │ │ ┌──────▼──────┐ │ │ │ Antenna │ │ │ └─────────────┘ │ └──────────────────────────────────────────┘ 问题:同一时刻,RF 前端只能调谐到一个频率!问题:同一时刻,RF前端只能调谐到一个频率!
1.2 Tune-Away 定义
Tune-Away(调离)是指 Modem 在服务一张卡的同时,短暂切换射频到另一张卡的频点,以便另一张卡执行必要的操作(如 paging 监听、系统信息读取等)。
时间轴 (ms级精度): SIM1 (主卡/数据卡): ████████████████░░░░░░████████████████░░░░░░████████████ 数据传输 │ Gap │ 数据传输 │ Gap │ 数据传输 SIM2 (副卡/待机卡): ██████ ██████ Paging Paging 监听 监听 ████ = RF 资源被占用 ░░░░ = Tune-Away Gap (SIM1 数据中断)2. Tune-Away的触发场景
2.1 周期性触发:Paging 监听
副卡需要定期监听基站的Paging消息以接收来电/短信:
┌─────────────────────────────────────────────┐ │ Paging 周期 (DRX Cycle) │ │ │ │ LTE: DRX Cycle = 1.28s / 2.56s (典型) │ │ 5G NR: DRX Cycle 可配置 (10ms ~ 10.24s) │ │ │ │ 每个 DRX Cycle 内的 Paging Occasion: │ │ ├── 持续时间: 1~2 个子帧 (1~2ms) │ │ └── 但 tune-away 总开销: ~20-50ms │ │ (含频率切换、AGC调整、解码时间) │ └─────────────────────────────────────────────┘2.2 事件触发
| 触发事件 | 描述 | 优先级 |
|---|---|---|
| Paging 监听 | 副卡定期监听基站 paging | 中 |
| 系统消息更新 | 副卡需要读取 SIB | 低 |
| 位置更新 (TAU/LAU) | 副卡移动到新 TA/LA | 高 |
| 测量报告 | 副卡需要进行邻区测量 | 低 |
| CSFB 来电 | 3G 回落来电通知 | 最高 |
| 紧急呼叫 | 任何卡的紧急呼叫 | 最高 |
2.3 优先级冲突处理
┌─────────────────────────────────────────────────────┐ │ Tune-Away 优先级决策树 │ │ │ │ 主卡状态 副卡事件 决策 │ │ ──────── ───────── ───── │ │ 空闲 Paging 立即 tune-away │ │ 数据传输(低速率) Paging 允许 tune-away │ │ 数据传输(高速率) Paging 延迟/快速返回 │ │ VoLTE 通话中 Paging 拒绝/微调 │ │ 紧急呼叫 任何 拒绝 │ │ 任何 紧急呼叫 立即切换 │ └──────────────────────────────────────────────────────┘3. RF Manager调度算法
3.1 高通 RF Manager 架构
┌─────────────────────────────────────────┐ │ RF Manager (RFMGR) │ │ │ │ ┌─────────────────────────────────┐ │ │ │ Priority Arbitrator │ │ │ │ (优先级仲裁器) │ │ │ └───────────────┬─────────────────┘ │ │ │ │ │ ┌───────────────▼─────────────────┐ │ │ │ Resource Scheduler │ │ │ │ (资源调度器) │ │ │ │ ┌──────────┐ ┌──────────────┐ │ │ │ │ │Time Slicer│ │Freq Planner │ │ │ │ │ │(时间片) │ │(频率规划) │ │ │ │ │ └──────────┘ └──────────────┘ │ │ │ └───────────────┬─────────────────┘ │ │ │ │ │ ┌───────────────▼─────────────────┐ │ │ │ RF Driver │ │ │ │ (射频驱动: 频率合成器/PLL控制) │ │ │ └─────────────────────────────────┘ │ └─────────────────────────────────────────┘3.2 时间片调度策略
策略1: Fixed Gap (固定间隔) ┌───────┐ ┌──┐ ┌───────┐ ┌──┐ ┌───────┐ │ SIM1 │ │S2│ │ SIM1 │ │S2│ │ SIM1 │ │ Data │ │PG│ │ Data │ │PG│ │ Data │ └───────┘ └──┘ └───────┘ └──┘ └───────┘ 每个 DRX Cycle 固定留一个 gap 策略2: Dynamic Gap (动态间隔) ┌─────────────┐ ┌──┐ ┌────────────────────┐ ┌──┐ │ SIM1 Data │ │S2│ │ SIM1 Data │ │S2│ │ (高吞吐) │ │PG│ │ (低吞吐) │ │PG│ └─────────────┘ └──┘ └────────────────────┘ └──┘ 根据主卡业务动态调整 gap 时长 策略3: Blanking (消隐) ┌──────────────────────────────────────────┐ │ SIM1 VoLTE Call (不允许中断) │ │ SIM2 Paging: DENIED (丢失可能的来电) │ └──────────────────────────────────────────┘ VoLTE 通话时完全拒绝 tune-away3.3 Tune-Away 时间开销分析
典型 Tune-Away 时间预算 (LTE → LTE):
- RF 频率切换: ~2ms (PLL 锁定)
- AGC(增益控制)调整: ~1ms
- 时间同步: ~2ms (帧边界对齐)
- Paging 解码: ~2ms (1个子帧)
- RF 切换回主卡: ~2ms (PLL 重锁定)
- AGC 恢复: ~1ms
- 安全裕量: ~5ms
- 总计: ~15-20ms(最优情况)
- 实际: ~30-50ms(含调度开销)
4. Tune-Away对业务的影响
4.1 数据业务影响
# 影响量化分析DRX_CYCLE=1280# ms (1.28s)TUNE_AWAY_DURATION=40# ms(平均)DATA_RATE_PEAK=150# Mbps (LTE Cat 12)# 吞吐量损失百分比throughput_loss=TUNE_AWAY_DURATION/DRX_CYCLE*100# = 40 / 1280 * 100 = 3.1%# 每次 tune-away 丢失的数据量data_loss_per_gap=DATA_RATE_PEAK*TUNE_AWAY_DURATION/1000# = 150 * 40 / 1000 = 6 Mbit = 0.75 MB# 额外影响:TCP 重传# tune-away 导致 RLC 层 NACK,触发 HARQ 重传# 严重时导致 TCP 超时重传,吞吐量可能下降 10-20%4.2 VoLTE通话影响
VoLTE 帧间隔:20ms(AMR-wB) 如果 tune-away gap 覆盖了 VoLTE 上行/下行帧: 丢帧 → 语音质量下降(MOS 评分降低) 连续丢帧 → 可听见的卡顿 极端情况 → 通话中断 解决方案: - 通话中禁止tune-away (blanking) - 利用VoLTE静音期做tune-away(DTX) - DSDA方案:根本消除冲突4.3 实测数据对比
| 场景 | DSDS (tune-away on) | DSDS (tune-away off) | DSDA |
|---|---|---|---|
| 下载速率 | 135 Mbps | 148 Mbps | 150 Mbps |
| 上传速率 | 45 Mbps | 49 Mbps | 50 Mbps |
| Ping延迟 | 35ms (偶尔 spike) | 28ms | 25ms |
| 副卡来电检测 | 延迟<2s | ×(无法接收) | ×(实时) |
| VoLTE MOS | 3.8 | 4.2 | 4.2 |
5. 高通的优化方案
5.1 Smart Tune-Away
高通在新平台上引入了Smart Tune-Away算法, 有以下特性:
预测性调度:
根据主卡的 HARQ 时序,在 HARQ 间隙;安排 tune-away,避免数据丢失。快速切换:
利用预配置的 RF 参数,减少 PLL 锁定时间; 从 ~2ms 降低到 <1ms。自适应 Paging 周期:
与网络协商更长的 eDRX 周期;减少 tune-away 频率。部分监听:
先快速检查 paging indicator;仅在有寻呼时才做完整解码。
5.2 DR-DSDS (Data Resume DSDS)
传统 DSDS: SIM1 通话开始 → SIM2 数据完全断开 → 通话结束 → 重建数据连接 (数据中断可能持续数分钟) DR-DSDS: SIM1 通话开始 → SIM2 数据暂停(保持PDP Context) → 通话结束 → 数据立即恢复(无需重拨号) (数据恢复时间:<1s)5.3 从 DSDS 到 DSDA 的演进
- 检测到双卡同时需要业务时动态切换到DSDA
- 通过 Dynamic Spectrum Sharing (DSS) 减少频率冲突
┌─────────── DSDS ──────────┐ ┌─────────── DSDA ──────────┐ │ │ │ │ │ SIM1 ──┐ │ │ SIM1 ──► RF Chain 0 │ │ ├── 共享RF ──► ANT│ │ │ │ SIM2 ──┘ │ │ SIM2 ──► RF Chain 1 │ │ │ │ │ │ 优点: 成本低、功耗低 │ │ 优点: 无 tune-away、 │ │ 缺点: tune-away 影响 │ │ 完全独立 │ │ │ │ 缺点: 成本高、功耗高 │ └────────────────────────────┘ └────────────────────────────┘ 混合方案 (Snapdragon 8 Gen 2+): - 默认 DSDS 模式 (省电) - 检测到双卡同时需要业务时动态切换到 DSDA - 通过 Dynamic Spectrum Sharing (DSS) 减少频率冲突6. 实践指南
6.1 Tune-Away 参数配置
# 查看当前 tune-away 配置(需 EFS/NV 访问权限)# NV 配置项:Tune-Away Controladb shellcat[Modem NV配置项]# 通过 QXDM 修改(开发/测试用)# EFS: [Modem NV配置项]# 值:0=禁用,1=启用,2=Smart模式# 通过 persist property 控制(部分平台支持)# adb shell setprop [厂商私有属性] 16.2 QXDM 日志分析
# 关键日志过滤器RF Resource Manager State 相关日志分类(具体 log code 见高通 QXDM 文档,需 NDA) RF Tune-Away Event 相关日志分类(具体 log code 见高通 QXDM 文档,需 NDAQ) LTE NAS EMM State(观察副卡注册)相关日志分类(具体 log code 见高通 QXDM 文档,需 NDA) LTE RRC OTA(观察 paging)相关日志分类(具体 log code 见高通 QXDM 文档,需 NDAQ) LTE MAC RACH Attempt(tune-away 后重建)相关日志分类(具体 log code 见高通 QXDM 文档,需 NDA)# 典型 Tune-Away 日志序列:[T1]RF_MGR: Tune-away request from Sub1(Paging)[T1]RF_MGR: Current Sub0 activity: DATA_TRANSFER[T1]RF_MGR: Priority check: ALLOW(Sub0 idle HARQ)[T2]RF_MGR: Executing tune-away(Sub0 → Sub1)[T2]RF_DRV: PLL relock tofreq=1850MHz(Band3)[T3]L1_NB: Paging decode complete(no_paging)[T3]RF_MGR: Tune-back(Sub1 → Sub0)[T4]RF_DRV: PLL relock tofreq=2630MHz(Band7)[T4]RF_MGR: Tune-away complete,duration=28ms6.3 性能测试方法
# 测试 tune-away 对下载速率的影响# 方法:对比 tune-away 开/关的 iperf 测试# Step 1: 启用 tune-away (正常 DSDS 模式)adb shell setprop[厂商私有属性]1adb shell am broadcast-acom.qualcomm.action.MODEM_RESTART# Step 2: 运行 iperf 测试iperf3-cserver_ip-t60-i1>result_ta_on.txt# Step 3: 禁用 tune-away (仅测试用, 副卡会无法接来电)adb shell setprop[厂商私有属性]0adb shell am broadcast-acom.qualcomm.action.MODEM_RESTART# Step 4: 再次运行 iperf 测试iperf3-cserver_ip-t60-i1>result_ta_off.txt# Step 5: 对比吞吐量和延迟 jitter6.4 开发者注意事项
// App 开发者应考虑的 DSDS tune-away 影响:// 1. 网络请求要有重试机制OkHttpClientclient=newOkHttpClient.Builder().retryOnConnectionFailure(true).connectTimeout(15,TimeUnit.SECONDS)// 比单卡场景多留裕量.build();// 2. 实时应用(VoIP/游戏)需要 jitter buffer// tune-away 导致周期性 ~50ms 延迟抖动JitterBufferbuffer=newJitterBuffer(minDelay:60,// ms, 大于 tune-away 时长maxDelay:200);// 3. 大文件下载使用断点续传// tune-away 期间 TCP 可能超时, 需要 Range 请求支持6.5 Antenna Sharing 与 MIMO 对 DSDS 的影响
6.5.1 天线共享架构
现代智能手机通常配备4-8根天线(含蜂窝、WiFi、GPS等),DSDS场景下蜂窝天线的分配策略直接影响性能:
┌──────────────────────────────────────────────────────────────┐ │ 典型旗舰机天线布局 (8 天线) │ │ │ │ ┌──────┐ ┌──────┐ │ │ │ANT 1 │ ← 蜂窝主集 (Primary Rx/Tx) │ANT 5 │ WiFi│ │ │(顶部) │ │(侧面) │ │ │ └──────┘ └──────┘ │ │ ┌──────┐ ┌──────┐ │ │ │ANT 2 │ ← 蜂窝分集 (Diversity Rx) │ANT 6 │ WiFi│ │ │(顶部) │ │(底部) │ │ │ └──────┘ └──────┘ │ │ ┌──────┐ ┌──────┐ │ │ │ANT 3 │ ← 蜂窝 MIMO/CA (Rx) │ANT 7 │ GPS │ │ │(中部) │ │(顶部) │ │ │ └──────┘ └──────┘ │ │ ┌──────┐ ┌──────┐ │ │ │ANT 4 │ ← 蜂窝辅助 (Aux Tx/Rx) │ANT 8 │ NFC │ │ │(底部) │ │(背部) │ │ │ └──────┘ └──────┘ │ │ │ │ DSDS 天线分配策略: │ │ ├── 单卡模式: ANT1(主Tx/Rx) + ANT2(分集) + ANT3(MIMO) │ │ │ = 4x4 MIMO 可用 │ │ ├── DSDS 正常: ANT1+ANT2(主卡) + ANT4(副卡Paging) │ │ │ 主卡降为 2x2 MIMO │ │ └── DSDS Tune-Away: ANT4 临时切到副卡频点 │ │ 主卡可能进一步降为 1x1 │ └──────────────────────────────────────────────────────────────┘6.5.2 MIMO 降级
DSDS模式下,由于天线资源需要在两张卡之间分配,主卡的MIMO层数会受到限制:
| 场景 | MIMO配置 | 峰值速率(理论) | 实际影响 |
|---|---|---|---|
| 无DSDS | 4×4 | 600 Mbps | - |
| DSDS激活 | 2×2 | 300 Mbps | 50% |
| Tune-Away | 1×1 | 150 Mbps | 75% |
降级时机:
- DSDS 激活时:4×4 → 2×2 (永久性降级)
- Tune-Away 期间:2×2 → 1×1 (临时性)
- 副卡 RACH/TAU:可能额外占用一根天线
Modem侧的MIMO模式切换:
# QDM 观察 MIMO 层数变化# Filter: [Modem日志分类] (LTE ML1 PDSCH Stats)# 关注字段:num_layers (1/2/4)# 当 tune-away 发生时,典型日志:[T1]ML1: MIMO config changed:2-layer →1-layer(reason: TA_START)[T2]ML1: MIMO config changed:1-layer →2-layer(reason: TA_END)6.5.3 Carrier Aggregation (CA) 与 Tune-Away 的交互
┌─────────────────────────────────────────────────────────────┐ │ CA + Tune-Away 交互 │ │ │ │ 正常 3CC CA 状态: │ │ PCC (主载波): Band 3, 20MHz ──┐ │ │ SCC1 (辅载波1): Band 1, 20MHz ──├── 总带宽 60MHz │ │ SCC2 (辅载波2): Band 7, 20MHz ──┘ │ │ │ │ Tune-Away 触发时的处理: │ │ Step 1: 去激活所有 SCC (辅载波) │ │ → Modem 发送 SCC Deactivation │ │ → 释放 SCC 对应的 RF 资源 │ │ Step 2: 仅保持 PCC 基础连接 (或暂停) │ │ Step 3: RF 切换到副卡频点 (执行 paging) │ │ Step 4: RF 切回主卡 PCC 频点 │ │ Step 5: 重新激活 SCC (需要网络侧配合) │ │ → SCC Activation 信令交互 │ │ → SCC re-sync (时间同步) │ │ │ │ SCC Deactivation Timer: │ │ ├── 如果 tune-away 很短 (<5ms): 不去激活 SCC │ │ ├── 如果 tune-away 中等 (5-20ms): 去激活但保持配置 │ │ └── 如果 tune-away 较长 (>20ms): 完全释放 SCC │ │ │ │ 恢复时间: │ │ ├── SCC 未释放: ~2ms (立即恢复) │ │ ├── SCC 去激活: ~10-20ms (快速重激活) │ │ └── SCC 完全释放: ~50-100ms (需要重新配置) │ └─────────────────────────────────────────────────────────────┘当主卡使用CA(载波聚合)时,tune-away的处理更加复杂:
- 如果tune-away很短(<5ms):不去激活SCC
- 如果tune-away中等(5-20ms):去激活但保持配置
- 如果tune-away较长(>20ms):完全释放SCC
CA与Tune-Away的性能影响量化:
# CA + Tune-Away吞吐量影响计算# 3CC CA峰值:600Mbps# Tune-Away期间:仅PCC可用 = 200 Mbps(或0,取决于策略)# SCC恢复时间:~50msDRX_CYCLE=1280# msTA_DURATION=40# ms(含SCC去激活/重激活)SCC_RECOVERY=50# ms# 有效数据传输时间比例effective_ratio=(DRX_CYCLE-TA_DURATION-SCC_RECOVERY)/DRX_CYCLE# = (1280 - 40 - 50) / 1280 = 93%# 但SCC恢复期间只有PCC速率# 实际平均吞吐 = 600*0.93 + 200*0.04 ≈ 566 Mbps# 相比无tune-away的600Mbps,损失约 5-7%6.5.4 上行Tx Switching与SAR
双卡场景下,发射(Tx)天线的切换策略和SAR限制需要特别处理:
Tx Switching与SAR在DSDS中的挑战 Tx天线切换: - 主卡Tx通常使用主天线(ANT1/ANT4) - 副卡在tune-away期间如果需要上行发送 (如TAU、RACH响应),需要切换Tx到副卡频段 - Tx切换比Rx切换更耗时(PA settling time) - 快速Tx切换可能产生杂散辐射(spurious emission) SAR(Specific Absorption Rate)限制: - 法规要求SAR不超过限值(如1.6W/kg) - DSDS下两张卡可能同时需要Tx: - 主卡数据上行 + 副卡TAU响应 - 此时总发射功率可能超SAR - 解决:Modem统一管理Tx功率预算 - 当两卡同时Tx时,主动降低功率(Power Backoff) - 典型退避:3-6dB(取决于天线间距和频段组合) - 影响:上行速率和覆盖范围降低 传感器联动: - 距离传感器检测手机靠近头部 → 降低发射功率 - 握持传感器检测手握位置 → 选择远离手的天线 - DSDS下联动逻辑更复杂(两卡可能需要不同天线)# 查看 SAR 相关状态adb shell dumpsys telephony.registry|grep-i"sar"# QXDM 观察 Tx Power Backoff# Filter: [Modem日志分类] (LTE ML1 Tx Power)# 关注: tx_power, backoff_db, sar_state# 查看天线切换事件adb logcat-bradio|grep-iE"antenna|switch|ant_sell"7. 总结
本文深入分析了DSDS最核心的技术难题——RF资源调度与Tune-Away机制:
- Tune-Away是DSDS共享射频的必然产物
- 调度策略需要平衡主卡业务体验和副卡可达性
- 高通通过Smart Tune-Away、DR-DSDS等技术持续优化
- 最终演进方向是DSDA(独立射频链路)
下一篇预告:双栈QMI连接下的SIM卡切换与Modem资源冲突
参考资料
- 3GPP TS 36.304 - UE Procedures in Idle Mode (Paging/DRX)
- 3GPP TS 38.304 - 5G NR UE Procedures in Idle Mode