<?xml version="1.0" encoding="utf-8" standalone="yes"?><feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://foundata.com/" xml:lang="en"><title>Fibocom on foundata</title><id>https://foundata.com/en/tags/fibocom/feed-atom.xml</id><link rel="self" type="application/atom+xml" hreflang="en" href="https://foundata.com/en/tags/fibocom/feed-atom.xml" title="atom"/><link rel="alternate" type="text/html" hreflang="en" href="https://foundata.com/en/tags/fibocom/" title="html"/><link rel="alternate" type="application/rss+xml" hreflang="en" href="https://foundata.com/en/tags/fibocom/feed-rss.xml" title="rss"/><link rel="alternate" type="application/atom+xml" hreflang="de" href="https://foundata.com/de/tags/fibocom/feed-atom.xml" title="atom, Deutsch"/><link rel="alternate" type="text/html" hreflang="de" href="https://foundata.com/de/tags/fibocom/feed-atom.xml" title="html, Deutsch"/><link rel="alternate" type="application/rss+xml" hreflang="de" href="https://foundata.com/de/tags/fibocom/feed-atom.xml" title="rss, Deutsch"/><updated>2026-09-07T14:02:00Z</updated><author><name>foundata GmbH</name><email>webmaster@foundata.com</email><uri>https://foundata.com/</uri></author><rights>© 2023-2026, foundata GmbH (https://foundata.com)</rights><icon>https://foundata.com/images/feed-icon.67ff83c698af1511552374e80cf5f6ff26d497ef21f04186cf058859d535ca75.svg</icon><logo>https://foundata.com/images/feed-logo.9138f24a120dabc7e3d34003662131cc9c7f2ff153ec39d2f6dea3a48c35b4bf.svg</logo><entry><title type="html">Rolling Wireless RW350R-GL / Fibocom FM350R-GL (5G module) on Linux</title><id>tag:foundata.com,2026-09-07:/en/blog/2026/rolling-rw350r-gl-fibocom-fm350r-gl-linux/</id><published>2026-09-07T12:28:00Z</published><updated>2026-09-07T14:02:00Z</updated><link href="https://foundata.com/en/blog/2026/rolling-rw350r-gl-fibocom-fm350r-gl-linux/?utm_source=feed-atom" rel="alternate" type="text/html"/><link href="https://foundata.com/de/blog/2026/rolling-rw350r-gl-fibocom-fm350r-gl-linux/?utm_source=feed-atom" rel="alternate" type="text/html" hreflang="de"/><link href="https://foundata.com/en/blog/2024/quectel-em05-g-thinkpad-t14-gen4-fedora-linux/?utm_source=feed-atom" rel="related" type="text/html" title="Quectel EM05-G (LTE module) with ThinkPad T14 Gen4 on Fedora 39 and 40"/><link href="https://foundata.com/en/blog/2024/aten-cv211-kvm-linux/?utm_source=feed-atom" rel="related" type="text/html" title="Using the ATEN CV211 (all-in-one KVM adapter) with Fedora Linux"/><link href="https://foundata.com/en/blog/2025/system-insights-command-line-free-vmstat/?utm_source=feed-atom" rel="related" type="text/html" title="System insights with command-line tools: free and vmstat"/><link href="https://foundata.com/en/blog/2025/fsfe-reuse-open-source-licensing-tips-tricks-spdx-sbom/?utm_source=feed-atom" rel="related" type="text/html" title="Making sense of software licensing with FSFE REUSE: A guide for open source developers, tips and tricks."/><link href="https://foundata.com/en/blog/2024/system-insights-command-line-lslogins-lsmod/?utm_source=feed-atom" rel="related" type="text/html" title="System insights with command-line tools: lslogins and lsmod"/><author><name>Andreas Haerter</name><uri>https://andreashaerter.com/</uri></author><summary type="html"><![CDATA[How to run the Rolling Wireless RW350R-GL 5G WWAN module on Fedora Linux with ModemManager alone, without Lenovo&rsquo;s proprietary unlock tool <a href="https://github.com/lenovo/lenovo-wwan-unlock/" target="_blank" rel="noreferrer noopener"><code>lenovo-wwan-unlock</code></a>.]]></summary><content type="html" xml:base="https://foundata.com/"><![CDATA[<p>We use ThinkPad X13 Gen 6 <code>21RMCTO1WW</code> laptops among others. They shipped with a 5G WWAN module that Lenovo sells as the &ldquo;Rolling Wireless RW350R-GL 5G CAT19&rdquo;. <a href="https://modemmanager.org/" target="_blank" rel="noreferrer noopener">ModemManager</a> detects it but cannot bring the radio up, because the module ships <a href="https://modemmanager.org/docs/modemmanager/fcc-unlock/" target="_blank" rel="noreferrer noopener">FCC-locked</a>.</p>
<p>For the unlock procedure on Linux, Lenovo publishes <a href="https://github.com/lenovo/lenovo-wwan-unlock/" target="_blank" rel="noreferrer noopener"><code>lenovo-wwan-unlock</code></a>. It works, but it is a closed binary running as root (sic!), supports only Ubuntu and Fedora, refuses to start on machines outside a hardcoded allowlist, and declines to unlock the modem when it finds a US SIM (for regulatory reasons, since it then assumes <a href="https://en.wikipedia.org/wiki/Federal_Communications_Commission" target="_blank" rel="noreferrer noopener">FCC</a> jurisdiction). None of that is necessary. ModemManager has shipped a working unlock procedure for this module since version 1.24. It is just not enabled by default.</p>
<p>We have submitted <a href="https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1491" target="_blank" rel="noreferrer noopener">a merge request</a> that reads the OEM string at runtime instead of hardcoding one vendor&rsquo;s value. Until it is merged and new ModemManager versions arrive downstream, the commands below may help you to get the module working today.</p>
<h2 id="which-module-is-this" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#which-module-is-this" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="which-module-is-this">Which module is this?</a></h2><p>The same piece of hardware appears under a lot of names, which makes searching for it frustrating. If any of these match your machine, this post applies to you:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Where you see it</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Rolling Wireless RW350R-GL</td>
          <td>Lenovo sales and order pages</td>
      </tr>
      <tr>
          <td>Fibocom FM350R-GL</td>
          <td>the actual design, and the FCC filing</td>
      </tr>
      <tr>
          <td>MediaTek T700, 5G Solution 5000</td>
          <td><code>lspci</code> output</td>
      </tr>
      <tr>
          <td><code>14c3:4d75</code></td>
          <td>PCI ID, shared with the Fibocom FM350-GL</td>
      </tr>
      <tr>
          <td><code>2099:3552</code></td>
          <td>PCI subsystem ID, Rolling Wireless</td>
      </tr>
      <tr>
          <td><code>mtk_t7xx</code></td>
          <td>kernel driver</td>
      </tr>
      <tr>
          <td>Dell DW5931e</td>
          <td>Dell&rsquo;s name for the same family</td>
      </tr>
  </tbody>
</table>
<p>Rolling Wireless was spun out of Sierra Wireless in 2020 and is now a Fibocom subsidiary, so the RW350R-GL is a rebadged FM350R-GL. Lenovo lists it for the X13 Gen 6 and Gen 7, the T14s 2-in-1 Gen 1, and the P16 and P16v Gen 3. Because ModemManager matches only on <code>14c3:4d75</code>, the instructions below also cover the plain Fibocom FM350-GL in machines like the X1 Carbon Gen 10 and 11.</p>
<h2 id="enabling-the-unlock" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#enabling-the-unlock" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="enabling-the-unlock">Enabling the unlock</a></h2><p><strong>If you installed <code>lenovo-wwan-unlock</code> before, remove it first.</strong> Its own script shadows the one from ModemManager, in <code>/usr/lib64/ModemManager/fcc-unlock.d/</code> on Fedora and <code>/usr/lib/x86_64-linux-gnu/ModemManager/fcc-unlock.d/</code> on Debian and Ubuntu. The uninstall script handles both:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone https://github.com/lenovo/lenovo-wwan-unlock.git
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> lenovo-wwan-unlock <span class="o">&amp;&amp;</span> chmod ugo+x fcc_unlock_uninstall.sh <span class="o">&amp;&amp;</span> ./fcc_unlock_uninstall.sh
</span></span></code></pre></div><p>Then enable ModemManager&rsquo;s own script. Fedora, Debian and Ubuntu all ship it in the same place:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo install -d -m <span class="m">0755</span> <span class="s2">&#34;/etc/ModemManager/fcc-unlock.d&#34;</span>
</span></span><span class="line"><span class="cl">sudo ln -s -f <span class="s2">&#34;/usr/share/ModemManager/fcc-unlock.available.d/14c3&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>              <span class="s2">&#34;/etc/ModemManager/fcc-unlock.d/14c3:4d75&#34;</span>
</span></span></code></pre></div><p>The script needs <code>xxd</code>, which none of them install as a hard dependency:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Fedora / Red Hat</span>
</span></span><span class="line"><span class="cl">rpm -q xxd <span class="o">||</span> sudo dnf install xxd
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Debian and Ubuntu</span>
</span></span><span class="line"><span class="cl">dpkg -s xxd &gt; /dev/null 2&gt;<span class="p">&amp;</span><span class="m">1</span> <span class="o">||</span> sudo apt install xxd
</span></span></code></pre></div><p><strong>Now shut the machine down completely. A warm reboot is not enough:</strong> the module keeps power across reboot and suspend, and only re-arms its lock when it loses power. After a cold boot the modem should come up on its own:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mmcli -L
</span></span><span class="line"><span class="cl">nmcli device <span class="p">|</span> grep gsm
</span></span></code></pre></div><h2 id="two-harmless-warnings" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#two-harmless-warnings" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="two-harmless-warnings">Two harmless warnings</a></h2><p>ModemManager logs this once during boot:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Cannot power-up: hardware radio switch is OFF
</span></span></code></pre></div><p>That is the FCC lock, not a physical switch or a soft block. Check <code>rfkill list</code> and you will see nothing blocked. The line is immediately followed by <code>power state updated: on</code> once the unlock script has run.</p>
<p>Uninstalling Lenovo&rsquo;s package also strips <code>--test-low-power-suspend-resume</code> from the ModemManager unit, which its installer had added to stop the modem waking the machine from suspend. If you notice spurious wakeups afterwards, restore it as a drop-in rather than by editing the packaged unit:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo install -d <span class="s2">&#34;/etc/systemd/system/ModemManager.service.d&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">printf</span> <span class="s1">&#39;[Service]\nExecStart=\nExecStart=/usr/bin/ModemManager --test-low-power-suspend-resume\n&#39;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  <span class="p">|</span> sudo tee <span class="s2">&#34;/etc/systemd/system/ModemManager.service.d/10-low-power-suspend.conf&#34;</span>
</span></span><span class="line"><span class="cl">sudo systemctl daemon-reload
</span></span></code></pre></div><h2 id="what-about-sar" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#what-about-sar" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="what-about-sar">What about SAR?</a></h2><p>SAR, the <a href="https://en.wikipedia.org/wiki/Specific_absorption_rate" target="_blank" rel="noreferrer noopener">specific absorption rate</a>,
is the regulatory limit on how much radio energy a body absorbs. The tables tell the
modem to back off transmit power on the bands and in the situations where the antennas
sit close to you.</p>
<p>Removing the Lenovo package does not remove them. <code>configservice_lenovo</code>
is a provisioner rather than a runtime component: it compares a version string and
writes the tables into the modem&rsquo;s non-volatile memory only when they differ. On my
machine, 127 runs produced exactly two writes, <code>1.02</code> in October 2025 and <code>1.1.3</code> in
August 2026. Every other run logged <code>bodysarver is same do not update</code>.</p>
<p>The tables live in the module and the modem enforces them itself, so they survive
reboots, suspend and uninstalling the package. What you give up is the updater: a newer
table version will not be installed, and nothing re-provisions the modem after an NV
wipe or a firmware reflash. Both are recoverable by reinstalling the package
temporarily, letting it write, and removing it again (and I doubt one needs these updates at all).</p>
<p>To check the current state:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo mbimcli -p -d /dev/wwan0mbim0 --fibocom-set-at-command<span class="o">=</span><span class="s1">&#39;AT+BODYSAREN?&#39;</span>
</span></span><span class="line"><span class="cl">sudo mbimcli -p -d /dev/wwan0mbim0 --fibocom-set-at-command<span class="o">=</span><span class="s1">&#39;AT+BODYSARVER?&#39;</span>
</span></span></code></pre></div><p>Note that Lenovo does not ship a table for every machine. On some models the service
logs <code>Lenovo Sar config is not supported in this machine</code>, in which case nothing was
ever written.</p>
<h2 id="how-the-unlock-works" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#how-the-unlock-works" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="how-the-unlock-works">How the unlock works</a></h2><p>No secret is involved. The modem answers <code>AT+GTFCCLOCKGEN</code> with a challenge, and the host replies with the first four bytes of <code>SHA-256(challenge || SHA-256(model_id)[0:4])</code> via <code>AT+GTFCCLOCKVER</code>. The <code>model_id</code> is the first OEM string in SMBIOS type 133, which you can read yourself:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo dmidecode -t <span class="m">133</span>
</span></span></code></pre></div><p>On ThinkPads that string is <code>KHOIHGIUCCHHII</code>, and <code>sha256sum</code> of it starts with <code>3df8c719</code>, exactly the constant in ModemManager&rsquo;s script. Fibocom&rsquo;s public <a href="https://www.minipc.de/support_db/support_files/Fibocom_FM350_AT%20Commands%20User%20Manual_V2.10.pdf" target="_blank" rel="noreferrer noopener">FM350 AT command manual</a> uses the same string as its worked example, in chapter 17.4.</p>
<p>Since that value is per vendor rather than per machine, hardcoding it means the script only works on the vendor it was taken from. A Dell Latitude 5540 with the same PCI ID <a href="https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/816" target="_blank" rel="noreferrer noopener">fails</a> for that reason, and Dell ships no SMBIOS type 133 string at all there, so reading it at runtime does not help either. <a href="https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/work_items/816#note_3649982" target="_blank" rel="noreferrer noopener">Its value turned out to be <code>DW5931EFCCLOCK</code></a>, matching Dell&rsquo;s own DW5931e branding.</p>
]]></content><category scheme="taxonomy:tags" term="fedora" label="fedora"/><category scheme="taxonomy:tags" term="wwan" label="wwan"/><category scheme="taxonomy:tags" term="modemmanager" label="modemmanager"/><category scheme="taxonomy:tags" term="fibocom" label="fibocom"/><category scheme="taxonomy:tags" term="rolling-wireless" label="rolling-wireless"/><category scheme="taxonomy:tags" term="mediatek" label="mediatek"/><category scheme="taxonomy:tags" term="lenovo" label="lenovo"/><category scheme="taxonomy:tags" term="thinkpad" label="thinkpad"/></entry></feed>