<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="http://sdr-x.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="http://sdr-x.github.io/" rel="alternate" type="text/html" /><updated>2026-07-10T14:05:18+00:00</updated><id>http://sdr-x.github.io/feed.xml</id><title type="html">SDR-X</title><subtitle>Jiao Xianjun&apos;s tech blog.</subtitle><author><name>Jiao Xianjun</name></author><entry><title type="html">Starlink Analysis – Supplement(6):The Effect of Relativity on OFDM Clock Errors in LEO Communications</title><link href="http://sdr-x.github.io/starlink-supplement6/" rel="alternate" type="text/html" title="Starlink Analysis – Supplement(6):The Effect of Relativity on OFDM Clock Errors in LEO Communications" /><published>2026-07-10T00:01:00+00:00</published><updated>2026-07-10T00:01:00+00:00</updated><id>http://sdr-x.github.io/starlink-supplement6</id><content type="html" xml:base="http://sdr-x.github.io/starlink-supplement6/"><![CDATA[<p>I continued reading the Starlink patent US12003350 and came across the following statement:</p>

<p>A small change in clock rate is also caused by special (motion) and general (gravity) relativistic effects but it is quite small in low Earth orbits (about 0.2 ppb or parts per billion).</p>

<p>This is the relativistic effect considered by Starlink when analyzing synchronization error sources in an OFDM system.</p>

<p>The conclusion is that the clock-rate difference caused by relativistic time dilation is much smaller than other synchronization error sources, such as Doppler shift and sampling-time drift due to satellite motion, crystal oscillator manufacturing tolerance, and temperature drift. Therefore, it can be safely neglected.</p>

<p>Perhaps I simply have not read enough papers, but this is the first time I have seen relativistic effects explicitly discussed in the context of OFDM synchronization algorithms. （of course I know that GNSS does consider it)</p>

<p>I do wonder whether, in deep-space communication scenarios—such as solar probes or Mars missions—the clock errors introduced by relativity become significant enough to require explicit compensation for communication synchronization.</p>

<p>Although I have not yet finished reading the patent, I now strongly feel that this is not merely a patent. It is a comprehensive treatise on modern OFDM communication engineering, covering fundamental principles, system design, and implementation details with remarkable completeness. Anyone who thoroughly understands every section of this patent would gain an excellent foundation in communication theory, system design, and engineering practice.</p>

<p>The first author of the patent, Martin McCormick, once remarked with characteristic humility:</p>

<p>“I’ve earned the somewhat dubious distinction of holding more patents than anyone else working for Elon Musk. I’ve invented about 10% of SpaceX’s entire patent portfolio.”</p>

<p>After reading this patent, I understand that statement very differently. He was not simply writing patent applications—he was writing what is effectively a technical textbook. There is nothing “dubious” about that achievement. The breadth and depth of his expertise are truly remarkable.</p>

<p>It is also said that he was among the last students of Alan V. Oppenheim. If so, his work certainly lives up to that reputation.</p>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="modem" /><category term="burst" /><category term="radio-frame" /><category term="OFDM" /><category term="pilot-cluster" /><category term="pilot" /><category term="CFO" /><category term="SFO" /><category term="doppler" /><category term="Relativity" /><summary type="html"><![CDATA[I continued reading the Starlink patent US12003350 and came across the following statement:]]></summary></entry><entry><title type="html">Starlink Analysis – Supplement(5):Pilot Design for LEO Broadband Access Compared with Wi-Fi and Cellular Systems</title><link href="http://sdr-x.github.io/starlink-supplement5/" rel="alternate" type="text/html" title="Starlink Analysis – Supplement(5):Pilot Design for LEO Broadband Access Compared with Wi-Fi and Cellular Systems" /><published>2026-07-08T00:01:00+00:00</published><updated>2026-07-08T00:01:00+00:00</updated><id>http://sdr-x.github.io/starlink-supplement5</id><content type="html" xml:base="http://sdr-x.github.io/starlink-supplement5/"><![CDATA[<p>Analysis of measured Starlink uplink signals and the Starlink patent US12003350 shows that the pilot structure is specifically designed for LEO satellite broadband access. Compared with terrestrial cellular systems and Wi-Fi, the similarities and differences are as follows.</p>

<p>The most distinctive feature of the Starlink pilot design is the pilot structure embedded within data OFDM symbols. It uses block-based pilot clusters. Two pilot clusters are placed at the two edges of the allocated frequency band, and each cluster contains eight consecutive pilot subcarriers. In contrast, Wi-Fi and cellular systems use distributed pilot subcarriers scattered across the frequency band.</p>

<p>A Starlink packet (burst) begins with an OFDM symbol consisting entirely of pilot subcarriers, similar to the Long Training Field (LTF) in Wi-Fi. This is followed by pilots embedded within data OFDM symbols for tracking. Wi-Fi follows a similar approach.</p>

<p>At the burst level, Starlink is architecturally closer to Wi-Fi. Cellular systems are closer to a continuous streaming structure, where pilots are periodically distributed across the entire time-frequency grid. However, Starlink also defines a periodic radio frame structure above the burst level. In this sense, Starlink combines concepts from both Wi-Fi and cellular systems, taking advantage of each.</p>

<p>The use of two pilot clusters instead of distributed pilots reflects the different situations faced by different systems.</p>

<p>The phased-array antennas on both the satellite and the user terminal provide strong directivity, suppressing multipath propagation. As a result, the channel exhibits relatively weak frequency selectivity. However, because of the high velocity of LEO satellites and the higher carrier frequencies, the channel exhibits much stronger time variations.</p>

<p>Block-based pilot clusters make it convenient to estimate inter-carrier interference (ICI). The ICI pattern resembles an FIR filter response. Once the ICI coefficients are estimated, equalization across multiple adjacent subcarriers can suppress ICI. The main sources of ICI include:</p>

<ul>
  <li>Residual carrier frequency offset (CFO)</li>
  <li>Residual Doppler components from multipath propagation</li>
  <li>The high-frequency components of phase noise, which become more significant at higher carrier frequencies</li>
</ul>

<p>Block-based pilots also allow averaging across adjacent pilot subcarriers to improve the estimation accuracy of Common Phase Error (CPE), resulting in better tracking of the low-frequency components of phase noise. This averaging is effective because adjacent subcarriers experience similar channel responses, especially when frequency selectivity is weak.</p>

<p>Finally, placing the two pilot clusters at the edges of the allocated frequency band makes them more sensitive to the subcarrier-dependent phase rotation caused by Sampling Frequency Offset (SFO), which accumulates from one OFDM symbol to the next. This improves SFO tracking and compensation. SFO includes both the intrinsic frequency error of the sampling clock and sampling-time drift caused by the motion of the LEO satellite.</p>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="modem" /><category term="burst" /><category term="radio-frame" /><category term="OFDM" /><category term="pilot-cluster" /><category term="pilot" /><category term="CFO" /><category term="SFO" /><category term="doppler" /><category term="LTF" /><category term="Wi-Fi" /><category term="LTE" /><category term="4G" /><category term="5G" /><summary type="html"><![CDATA[Analysis of measured Starlink uplink signals and the Starlink patent US12003350 shows that the pilot structure is specifically designed for LEO satellite broadband access. Compared with terrestrial cellular systems and Wi-Fi, the similarities and differences are as follows.]]></summary></entry><entry><title type="html">Starlink Analysis – Supplement (4):Frame Structure</title><link href="http://sdr-x.github.io/starlink-supplement4/" rel="alternate" type="text/html" title="Starlink Analysis – Supplement (4):Frame Structure" /><published>2026-07-07T12:01:00+00:00</published><updated>2026-07-07T12:01:00+00:00</updated><id>http://sdr-x.github.io/starlink-supplement4</id><content type="html" xml:base="http://sdr-x.github.io/starlink-supplement4/"><![CDATA[<p>I continued reading the Starlink patent US12003350 and obtained the following information.</p>

<p>Each burst begins with a Unique Word (UW), followed by multi-user OFDM symbols.</p>

<p>For an individual user:</p>

<ul>
  <li>The first OFDM symbol is used for channel estimation. It can be configured as one or multiple OFDM symbols. The content is generated from a Golay sequence.</li>
  <li>The remaining OFDM symbols carry payload. Each symbol consists of data subcarriers, pilot clusters (with a configurable number of pilot subcarriers), and configurable DC null subcarriers.</li>
</ul>

<p>The pilot clusters are placed at the two edges of the user’s allocated frequency band. Their offsets from the band edges are configurable, and the placement is symmetric.</p>

<p>A radio frame may contain multiple bursts. Starting from the second burst, the UW is optional.</p>

<p>Each user may occupy multiple Resource Blocks (RBs), with multiple RBs mapped to contiguous subcarriers. Different users occupy non-overlapping frequency bands, beginning with the non-overlapping channel estimation subcarriers in frequency domain.</p>

<p>A channel supports up to four users.</p>

<p>The UW is used for:</p>

<ul>
  <li>Burst detection</li>
  <li>OFDM symbol alignment</li>
  <li>Power estimation</li>
  <li>Carrier frequency offset (CFO) estimation</li>
</ul>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="modem" /><category term="burst" /><category term="radio-frame" /><category term="frame-structure" /><category term="channel-estimation" /><summary type="html"><![CDATA[I continued reading the Starlink patent US12003350 and obtained the following information.]]></summary></entry><entry><title type="html">Starlink Analysis – Supplement (3):UW Selection, Sampling Rate, Bandwidth, and Configurable Parameters</title><link href="http://sdr-x.github.io/starlink-supplement3/" rel="alternate" type="text/html" title="Starlink Analysis – Supplement (3):UW Selection, Sampling Rate, Bandwidth, and Configurable Parameters" /><published>2026-07-07T00:01:00+00:00</published><updated>2026-07-07T00:01:00+00:00</updated><id>http://sdr-x.github.io/starlink-supplement3</id><content type="html" xml:base="http://sdr-x.github.io/starlink-supplement3/"><![CDATA[<p>I continued reading the Starlink patent US12003350 to kill the time.</p>

<p>The Unique Word (UW) at the beginning of each packet is indeed likely different for different users. However, it is associated with the channel ID, rather than the terminal’s MAC address. FIG.12 confirms this.</p>

<p>The meaning of CFR is also confirmed. It indeed stands for Crest Factor Reduction, not Channel Frequency Response. The patent states:</p>

<p>“Transmitter components including at least a crest factor reduction module and a digital pre-distortion module.”</p>

<p>The patent further confirms the following:</p>

<ul>
  <li>Single-channel terminal uplink bandwidth: 62.5 MHz</li>
  <li>Dual-channel terminal uplink bandwidth: 2 × 62.5 MHz</li>
  <li>Satellite-to-terminal downlink bandwidth per channel: 250 MHz</li>
  <li>Satellite-to-gateway downlink bandwidth per channel: 250 MHz</li>
  <li>Gateway-to-satellite uplink bandwidth per channel: 500 MHz</li>
</ul>

<p>Why is the gateway-to-satellite channel the widest?</p>

<p>Most likely because it carries the aggregated Internet DL traffic for a large number of user terminals, including web browsing and video streaming.</p>

<p>Channel bandwidth is changed by adjusting the sampling rate, while keeping the FFT size unchanged. This matches my earlier guess based on measured uplink signals.</p>

<p>The modem’s configurable parameters include:</p>

<ul>
  <li>a bandwidth,</li>
  <li>a number of pilot sym-bols,</li>
  <li>a pilot band ollset,</li>
  <li>a pilot averaging configuration,</li>
  <li>a resource block size,</li>
  <li>a user allocation in one or more bursts of a radio frame,</li>
  <li>a time-domain cyclic guard band configu-ration,</li>
  <li>a number of channel estimation symbols,</li>
  <li>a length of’ a cyclic prefix and postfix value,</li>
  <li>a characteristic of a DC null,</li>
  <li>a burst length,</li>
  <li>a modulation and coding scheme,</li>
  <li>an antenna delay adjustment</li>
  <li>and a carrier frequency.</li>
</ul>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="modem" /><category term="feeder-link" /><category term="CFR" /><category term="DPD" /><category term="bandwidth" /><category term="gateway" /><summary type="html"><![CDATA[I continued reading the Starlink patent US12003350 to kill the time.]]></summary></entry><entry><title type="html">Starlink Analysis – Supplement (2): A Hypothesis on the Unique Word (UW)</title><link href="http://sdr-x.github.io/starlink-supplement2/" rel="alternate" type="text/html" title="Starlink Analysis – Supplement (2): A Hypothesis on the Unique Word (UW)" /><published>2026-07-06T01:05:00+00:00</published><updated>2026-07-06T01:05:00+00:00</updated><id>http://sdr-x.github.io/starlink-supplement2</id><content type="html" xml:base="http://sdr-x.github.io/starlink-supplement2/"><![CDATA[<p>I continued reading the Starlink patent US12003350 to kill the time.</p>

<p>Facts</p>

<p>Each uplink packet begins with a Unique Word (UW) consisting of:</p>

<ul>
  <li>An identical 128-sample sequence repeated 8 times.</li>
  <li>A 48-sample cyclic prefix (CP).</li>
  <li>The first 128-sample sequence is phase-inverted by 180° relative to the remaining seven repetitions.</li>
</ul>

<p>However, it is still unclear whether this 128-sample sequence is identical for all user terminals. If different terminals use different sequences, how are they assigned? For example, are they derived from the terminal’s unique MAC address?</p>

<p>What the patent says about the Unique Word</p>

<p>According to the patent, the UW is used to:</p>

<ul>
  <li>Detect uplink bursts.</li>
  <li>Estimate the carrier frequency offset (CFO) of each terminal.</li>
  <li>Allow signals from multiple terminals to overlap.</li>
  <li>Estimate CFO by detecting the phase rotation of a set of peaks associated with differential metrics:
  “The burst detection component further can identify a phase rotation of a set of peaks associated with differential metrics in the received waveform to determine the estimation of the carrier frequency offset.”</li>
</ul>

<p>A hypothesis</p>

<p>Based on these descriptions, it seems likely that each terminal uses a different UW (i.e., a terminal-specific signature sequence). Otherwise, it would be difficult to estimate the CFO of individual terminals when their uplink signals overlap.</p>

<p>In this sense, the UW resembles a signature sequence in a CDMA system.</p>

<p>An interesting observation</p>

<p>From the captured uplink waveform, the full-bandwidth UW is immediately followed by partial-bandwidth (RB: resource-block) OFDM symbols.</p>

<p>This suggests that a UW lasting only one OFDM-symbol duration is sufficient for uplink access. The satellite appears able to identify the transmitting terminal, estimate its CFO, and perform compensation using only the UW at the beginning of each packet, even multi terminals’ signal are overlapping.</p>

<p>Compared with the conventional random access procedures used in terrestrial cellular systems (e.g., the four-step contention-based or three-step contention-free procedures in LTE), the Starlink approach appears much simpler and more efficient.</p>

<p>Because satellite links have much longer propagation delays, multi-step stateful random access procedures may introduce unacceptable overhead. This appears to be an optimization specifically designed for satellite communications.</p>

<p>Why might this work?</p>

<p>My hypothesis is that Starlink terminals perform relatively accurate propagation-delay and Doppler pre-compensation before transmission.</p>

<p>As a result, even if the UWs from multiple terminals overlap, they arrive at the satellite in approximate time alignment (perhaps with timing errors smaller than the CP duration). This would significantly reduce the complexity of detection or enable more advanced multi-user detection algorithms.</p>

<p>Another possible reason is that the number of active terminals within a single satellite beam is relatively small—much lower than in a terrestrial cellular cell—making multi-user detection more manageable.</p>

<p>In contrast, terrestrial cellular systems such as LTE generally do not assume timing or Doppler pre-compensation during PRACH random access. Consequently, the base station must handle a fundamentally asynchronous, CDMA-like multi-user detection problem. This is more challenging for the network, but it keeps the terminal implementation simpler. Reliable identification of different terminals is then achieved through the subsequent multi-step random access signaling procedure.</p>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="modem" /><category term="CDMA" /><category term="Spreading-code" /><category term="Signature-sequence" /><category term="Multi-User-Detection" /><category term="Unique-Word" /><summary type="html"><![CDATA[I continued reading the Starlink patent US12003350 to kill the time.]]></summary></entry><entry><title type="html">Starlink Analysis – Supplement (1): A Unique Modem Design Philosophy</title><link href="http://sdr-x.github.io/starlink-supplement1/" rel="alternate" type="text/html" title="Starlink Analysis – Supplement (1): A Unique Modem Design Philosophy" /><published>2026-07-05T01:05:00+00:00</published><updated>2026-07-05T01:05:00+00:00</updated><id>http://sdr-x.github.io/starlink-supplement1</id><content type="html" xml:base="http://sdr-x.github.io/starlink-supplement1/"><![CDATA[<p>During the holiday, besides spending time with my family, I passed some spare time by reading the well-known Starlink patent US12003350.</p>

<p>Today I only read the first small section, but I already found two interesting points.</p>

<p>1 .</p>

<p>A radical departure from the traditional satellite modem design philosophy</p>

<p>In conventional satellite communication systems, the modem design differs significantly between the user terminal, the satellite payload, and the feeder link (the satellite-to-gateway link). This is because these links operate under substantially different conditions, including frequency band, bandwidth, data rate, operating environment (mobile vs. fixed, multipath characteristics, antenna capability, etc.). As a result, each modem is typically optimized specifically for its own role.</p>

<p>In the Starlink system, however, the user terminal, the satellite, and the gateway station all use a common OFDM modem architecture. The same modem is adapted to different links and hardware characteristics primarily through what the patent describes as a “configurable” design.</p>

<p>This is yet another major break from traditional satellite communications. In terms of how disruptive it is, I would say it rivals Starlink’s earlier decision to deploy OFDM on satellites at large scale.</p>

<p>What surprised me even more is that the feeder link (satellite to gateway) also uses essentially the same OFDM modem as the user link (satellite to terminal).</p>

<p>Traditionally, feeder links operate in higher frequency bands. Gateway stations are equipped with high-gain antennas and high G/T, and there are many mature high-speed single-carrier modems available for such links. Compared with wideband OFDM, high-speed single-carrier waveforms are much more friendly to power amplifiers.</p>

<p>In the Starlink system, however, essentially the same or a very similar OFDM modem architecture is used throughout the entire network. This undoubtedly simplifies the overall system design, reduces hardware cost, and decreases the number of different modem vendors that must be managed. It is an aggressive and bold engineering decision.</p>

<p>This is absolutely not the kind of design that would come from a traditional aerospace organization. Had such a proposal gone through an internal design review at a conventional aerospace company, it would almost certainly have been heavily criticized.</p>

<p>Only an outsider who is unconstrained by conventional thinking would be willing to attempt something like this.</p>

<p>2 .</p>

<p>There appears to be an error in the patent’s Summary section</p>

<p>The patent states:</p>

<p>“The modem can further include an orthogonal frequency division multiplexing baseband processing component and a digital front-end processing component for at least one of digital pre-distortion and a channel frequency response (CFR).”</p>

<p>Here, I believe CFR is incorrect.</p>

<p>It should most likely refer to Crest Factor Reduction (CFR) rather than Channel Frequency Response, because Crest Factor Reduction is commonly paired with DPD (Digital Pre-Distortion) in digital front-end processing for OFDM power amplifier linearization. The pairing of DPD and CFR is standard practice, whereas “Channel Frequency Response” does not fit naturally in this context.</p>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="modem" /><category term="feeder-link" /><category term="DPD" /><category term="CFR" /><summary type="html"><![CDATA[During the holiday, besides spending time with my family, I passed some spare time by reading the well-known Starlink patent US12003350.]]></summary></entry><entry><title type="html">Starlink uplink signal analysis (6): Discovery of the Pilot Sub-Bands in Patents, and Signal Analysis Techniques for Time-Domain Structure and Modulation Symbols</title><link href="http://sdr-x.github.io/starlink6/" rel="alternate" type="text/html" title="Starlink uplink signal analysis (6): Discovery of the Pilot Sub-Bands in Patents, and Signal Analysis Techniques for Time-Domain Structure and Modulation Symbols" /><published>2026-06-24T11:05:00+00:00</published><updated>2026-06-24T11:05:00+00:00</updated><id>http://sdr-x.github.io/starlink6</id><content type="html" xml:base="http://sdr-x.github.io/starlink6/"><![CDATA[<p>This post introduces two useful signal analysis techniques:</p>
<ul>
  <li>To analyze time-domain structure, use delayed conjugate multiplication and observe the resulting phase.</li>
  <li>To distinguish between ordinary QPSK and π/4-QPSK, use the fourth-power method.</li>
</ul>

<p>Example 1: Verifying the Time-Domain Structure</p>

<p>Based on patents and papers, I hypothesized that:</p>
<ul>
  <li>The uplink baseband sampling rate is 60 MHz.</li>
  <li>The STF consists of eight repetitions of a 128-sample sequence plus a 48-sample CP.</li>
  <li>Each OFDM symbol consists of a 1024-sample symbol body plus a 48-sample CP.</li>
</ul>

<p>Alternatively, the OFDM symbol can be viewed as having a 24-sample cyclic prefix and a 24-sample cyclic postfix, as described in patent US12003350.</p>

<p>To verify this, delayed conjugate multiplication can be applied to the IQ samples:</p>
<ul>
  <li>Use a 128-sample delay to detect the eight repeated STF sequences.</li>
  <li>Use a 1024-sample delay to detect the CP and OFDM symbol structure.</li>
</ul>

<p>Since the signal is multiplied by a delayed version of itself, this method is insensitive to carrier frequency offset.</p>

<p>128-Sample Delayed Conjugate Multiplication (Unless otherwise stated, Style 1 packets are used as examples.)</p>

<p><img src="../media/style1_sub1_128_delay_multiply_phase.png" alt="" /></p>

<p>The result clearly shows the eight repetitions of the 128-sample sequence. It can also be seen that the first sequence has a 180° phase difference relative to the other seven repetitions.</p>

<p>1024-Sample Delayed Conjugate Multiplication</p>

<p><img src="../media/style1_sub1_1024_delay_multiply_phase.png" alt="" /></p>

<p>The result confirms that the assumed CP length and OFDM symbol length are correct. The CP region produces a constant phase difference in the delayed conjugate multiplication result.</p>

<p>This property can be used to:</p>
<ul>
  <li>Locate OFDM symbol boundaries.</li>
  <li>Estimate the fractional carrier frequency offset.</li>
</ul>

<p>Identifying QPSK Using the Fourth-Power Method</p>

<p>After obtaining the frequency-domain subcarrier symbols, plot their phases. As an example, consider the first OFDM symbol of a Style 1 packet.</p>

<p><img src="../media/style1_sub1_ru1_sym1_phase.png" alt="" /></p>

<p>The constellation appears to contain only four possible phases, suggesting QPSK modulation. To verify this, plot the phase of the symbols after raising them to the fourth power.</p>

<p><img src="../media/style1_sub1_ru1_sym1_phase_4th_power.png" alt="" /></p>

<p>The points collapse near to a single line, it confirms that the original modulation contains only four phase states.</p>

<p>If that line has a non-zero slope, it can also be used to estimate and compensate sampling phase errors, either:</p>
<ul>
  <li>in the time domain, or</li>
  <li>on a per-subcarrier basis in the frequency domain.</li>
</ul>

<p>Detecting π/4-QPSK</p>

<p>An interesting result appears when the fourth-power phase is plotted for the second OFDM symbol of a Style 1 packet.</p>

<p><img src="../media/style1_sub1_ru1_sym2_phase_4th_power.png" alt="" /></p>

<p>Two groups of subcarriers converge to a phase that differs by 180° from that of most other subcarriers. This indicates that these subcarriers are rotated by 45° (π/4) relative to the others, because:</p>

<p>45° × 4 = 180°</p>

<p>The corresponding constellation diagrams were shown in the previous post.</p>

<p>Connection to Starlink Pilot Sub-Bands</p>

<p>A reasonable hypothesis is that these special subcarrier regions correspond to pilot subcarriers embedded within the data symbols. This is consistent with the PILOT SUB-BANDS shown in the well-known Starlink patent US12003350B1.</p>

<p><img src="../media/US12003350-20240604-D00000.png" alt="" /></p>

<p>The parameter examples described in the patent match the observations reported in the previous post remarkably well:</p>

<p>“For example, the offset can be a 16 tone (another name for subcarrier) pilot sub-band offset from the band edge. ”</p>

<p>“a burst 1622 can include N subcarriers 1622 including a first 16 tone (subcarrier) pilot sub-band offset from a band edge 1624 at a low end of the frequency 
spectrum and a second 16 tone pilot sub-band offset from another band edge 1636 at a high end of the frequency spectrum.”</p>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="Wi-Fi" /><category term="WiFi" /><category term="802.11ax" /><category term="OFDMA" /><category term="RU" /><category term="RU-Allocation" /><category term="LNB" /><category term="SDR" /><category term="AD9361" /><category term="FPGA" /><category term="Uplink" /><category term="QPSK" /><category term="Pilot" /><summary type="html"><![CDATA[This post introduces two useful signal analysis techniques: To analyze time-domain structure, use delayed conjugate multiplication and observe the resulting phase. To distinguish between ordinary QPSK and π/4-QPSK, use the fourth-power method.]]></summary></entry><entry><title type="html">Starlink uplink signal analysis (5): Detailed Modulation Structures and Repeated Bit Sequences</title><link href="http://sdr-x.github.io/starlink5/" rel="alternate" type="text/html" title="Starlink uplink signal analysis (5): Detailed Modulation Structures and Repeated Bit Sequences" /><published>2026-06-23T12:05:00+00:00</published><updated>2026-06-23T12:05:00+00:00</updated><id>http://sdr-x.github.io/starlink5</id><content type="html" xml:base="http://sdr-x.github.io/starlink5/"><![CDATA[<p>This post reveals several unusual modulation structures that appear repeatedly in Starlink uplink signals. I also found several hard-decision bit sequences that reoccur across different packets.</p>

<p>(Unless otherwise stated, all analysis in this post is performed on the first OFDM symbol following the STF within each packet.)</p>

<p>First, I would like to correct a previous conclusion: In “Starlink uplink signal analysis (3): demodulation is successful”, I thought that the two OFDM symbols following the full-bandwidth STF were likely training sequences similar to the LTF in Wi-Fi. After analyzing many more packets, I now believe this is probably incorrect. 
The OFDM symbols following the STF frequently appear to contain actual data (or signaling information) rather than fully known pilot patterns like a Wi-Fi LTF. The packet structure is therefore updated as shown below.</p>

<p><img src="../media/starlink-ul-pkt.png" alt="" /></p>

<p>The packet previously classified as Style 1 (the structure shown above) contains a single 252-subcarrier RU (-260 to -9, 14.766 MHz).</p>

<p><img src="../media/starlink-ul-pkt-style1.png" alt="" /></p>

<p>The demodulated constellation of its first OFDM symbol is shown below.</p>

<p><img src="../media/style1_sub1_ru1_sym1_raw.png" alt="" /></p>

<p>After hard decision, the real and imaginary bits are obtained as follows:</p>
<ul>
  <li>Mapping: 1 to 0, -1 to 1</li>
  <li>Includes the usual 90° phase ambiguity</li>
</ul>

<p>style1_sub1_ru1_sym1 real part</p>

<p>1  0  1  1  0  0  1  1  0  1  0  1  1  1  1  0  1  1  0  1  0  1  0  1  0  1  1  0  1  0  1  0  1  0  0  0  0  0  1  1  0  0  1  0  1  1  1  0  1  0  0  0  1  0  1</p>

<p>1  1  0  1  1  0  1  1  0  0  1  0  0  0  1  0  1  1  1  1  0  0  1  1  0  1  1  1  0  0  0  1  0  1  1  1  1  1  0  1  0  1  1  0  0  1  1  0  1  1  0  1  1  0  0</p>

<p>1  0  1  1  0  1  0  0  1  1  0  0  0  0  0  0  0  0  1  0  0  1  0  1  1  0  0  1  0 1  0  0  1  0  0  0  0  0  1  0  1  1  0  1  0  0  0  0  0  0  0  1  0  0  0</p>

<p>1  1  1  1  1  0  1  0  0  0  0  0  0  0  1  0  0  0  1  1  0  1  1  0  0  0  1  1  1  1  0  0  1  1  0  0  0  0  0  1  0  1  01  1  0  1  0  1  0  1  0  1  1  0</p>

<p>1  1  0  1  1  0  0  0  0  0  1  1  0  0  1  1  1  1  1  0  1  0  0  0  1  0  1  1  1  1  0  1</p>

<p>style1_sub1_ru1_sym1 imag part</p>

<p>0  1  1  1  0  0  1  0  0  0  0  1  1  1  0  0  0  1  0  1  0  0  1  0  1  1  1  0  0  1  0  1  1  0  0  1  0  0  1  0  0  0  0  0  1  1  0  0  1  1  1  0  1  1  0</p>

<p>1  0  1  1  1  1  0  1  1  0  0  0  1  0  0  1  1  0  1  0  0  1  0  0  1  0  0  0  1  0  1  0  1  0  0  0  1  1  0  1  0  1  1  1  1  1  1  0  1  1  1  1  1  0  0</p>

<p>1  0  0  1  1  1  0  0  1  0  1  0  0  0  0  0  1  1  0  1  0  1  0  0  1  1  0  1  0 1  1  0  1  0  1  0  0  1  0  1  0  1  0  1  1  1  0  0  1  1  0  0  0  0  0</p>

<p>0  1  1  0  1  1  1  1  0  1  1  1  0  0  0  1  0  1  0  0  1  0  0  1  0  0  0  1  0  1  1  1  1  1  0  0  0  0  1  1  1  0  10  0  0  0  0  1  0  1  0  0  0  1</p>

<p>1  1  0  1  0  1  1  0  0  0  1  0  0  0  0  1  1  1  0  0  1  1  0  0  1  1  0  1  0  0  0  1</p>

<p>In the first RU of a Style 5 packet (also a 252-subcarrier RU, 14.766 MHz), I obtained exactly the same bit sequence. (A Style 5 packet also contains a second, wider RU (8 to 507, 29.53 MHz). )</p>

<p><img src="../media/starlink-ul-pkt-style5.png" alt="" /></p>

<p>The figure below shows the sliding correlation result between the hard-decision sequences of the 252-subcarrier RU in the Style 5 packet and the corresponding RU in the Style 1 packet.</p>

<p><img src="../media/style1_sub1_ru1_sym1_corr_style5_sub1_ru1_sym1.png" alt="" /></p>

<p>The correlation peak is exactly: 2 × 252 = 504 indicating that the two hard-decision complex sequences are identical.</p>

<p>The second OFDM symbol of the Style 1 packet contains an unusual modulation structure: Most of the 252 subcarriers use QPSK. However, the following subcarrier groups: 17 to 24 and 229 to 236 for a total of: 2 × 8 = 16 subcarriers (or 2 × 0.469 MHz) use a QPSK constellation rotated by 45° (π/4).</p>

<p>The constellation diagrams of these two modulation types are shown in the figures below.</p>

<p><img src="../media/style1_sub1_ru1_sym2_raw_qpsk.png" alt="" /></p>

<p><img src="../media/style1_sub1_ru1_sym2_raw_piOV4_qpsk.png" alt="" /></p>

<p>This modulation structure also appears in Style 3 packets. In fact, Style 3 packets contain an even more complicated modulation pattern.</p>

<p><img src="../media/starlink-ul-pkt-style3.png" alt="" /></p>

<p>Within the 504-subcarrier RU (upper edge of the channel) of the style 3 packet: The first 126 subcarriers (7.38 MHz) have the same modulation structure as the first 126 subcarriers of the Style 1 packet.</p>
<ul>
  <li>Subcarriers 17 to 24 use π/4-QPSK.</li>
  <li>The remaining subcarriers use standard QPSK.</li>
</ul>

<p>More interestingly, the further: 504 − 126 = 378 subcarriers (22.15 MHz) appear to use 16-QAM rotated by a fixed angle.</p>

<p>The three modulation types present in this 504-subcarrier RU of the style 3 packet are illustrated in the three constellation plots below.</p>

<p><img src="../media/style3_sub3_ru1_sym1_raw_qpsk.png" alt="" /></p>

<p><img src="../media/style3_sub3_ru1_sym1_raw_piOV4_qpsk.png" alt="" /></p>

<p><img src="../media/style3_sub3_ru1_sym1_raw_16qam.png" alt="" /></p>

<p>Although similar modulation structures are observed in both Style 1 and Style 3 packets, the hard-decision QAM symbol sequences from the corresponding subcarriers show no significant correlation peaks. This suggests that the transmitted bit contents are different.</p>

<p>An especially interesting result was found for the narrowband Style 7 packets. These packets contain a 63-subcarrier RU (3.69 MHz) located near the lower edge of the channel.</p>

<p><img src="../media/starlink-ul-pkt-style7.png" alt="" /></p>

<p>After examining four such packets, I found that the hard-decision QPSK contents of their first OFDM symbols were completely identical.</p>

<p><img src="../media/style7_sub1_ru1_sym1_raw_qpsk.png" alt="" /></p>

<p>The figure below shows the sliding correlation results among the hard-decision complex sequences from four Style 7 packets. The correlation peak is exactly: 2 × 63 = 126 indicating perfect alignment.</p>

<p><img src="../media/style7_4_pkts_ru1_sym1_cross_corr.png" alt="" /></p>

<p>After hard decision, the real and imaginary bits are obtained as follows:</p>
<ul>
  <li>Mapping: 1 to 0, -1 to 1</li>
  <li>Includes the usual 90° phase ambiguity</li>
</ul>

<p>style7_sub1_ru1_sym1 real part</p>

<p>1  1  1  1  1  1  0  1  1  1  1  0  0  0  1  0  1  0  0  0  1  1  0  1  0  0  0  1  1  1  0  0  1  0  1  0  1  1  0  1  1  1  1  0  0  1  0  1  1  0  0  1  0  0  1  0  1  1  1  1  0  0  1</p>

<p>style7_sub1_ru1_sym1 imag part</p>

<p>0  0  1  0  0  0  1  0  0  1  1  1  1  1  0  1  1  0  1  1  0  0  1  1  1  0  1  0  0  0  0  1  1  1  0  1  0  1  0  1  1  0  0  1  0  1  0  1  0  1  1  1  1  1  0  0  0  0  1  0  1  1  1</p>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="Wi-Fi" /><category term="WiFi" /><category term="802.11ax" /><category term="OFDMA" /><category term="RU" /><category term="RU-Allocation" /><category term="LNB" /><category term="SDR" /><category term="AD9361" /><category term="FPGA" /><category term="Uplink" /><category term="QPSK" /><category term="16QAM" /><summary type="html"><![CDATA[This post reveals several unusual modulation structures that appear repeatedly in Starlink uplink signals. I also found several hard-decision bit sequences that reoccur across different packets.]]></summary></entry><entry><title type="html">Starlink uplink signal analysis (4): OFDMA and RU allocation</title><link href="http://sdr-x.github.io/starlink4/" rel="alternate" type="text/html" title="Starlink uplink signal analysis (4): OFDMA and RU allocation" /><published>2026-06-20T12:04:00+00:00</published><updated>2026-06-20T12:04:00+00:00</updated><id>http://sdr-x.github.io/starlink4</id><content type="html" xml:base="http://sdr-x.github.io/starlink4/"><![CDATA[<p>I collected more uplink signals from a Starlink Mini terminal and observed different RU (Resource Unit, borrowing the Wi-Fi OFDMA terminology) sizes used during transmission.</p>

<p>The observed numbers of active subcarriers per RU are:</p>

<ul>
  <li>63</li>
  <li>189 (3 × 63)</li>
  <li>252 (4 × 63)</li>
  <li>441 (7 × 63)</li>
  <li>504 (8 × 63)</li>
</ul>

<p>All signals were captured from the first uplink channel, centered at 14 GHz + 31.25 MHz.</p>

<p>I identified eight packet types (shown in the figure), each corresponding to a particular OFDMA RU allocation pattern. One important observation is that all OFDM symbols within the same packet use the same RU allocation pattern.</p>

<p><img src="../media/starlink-ul-pkt-style1-4.png" alt="" /></p>

<p><img src="../media/starlink-ul-pkt-style5-8.png" alt="" /></p>

<p>I would like to invite others to help solve this Starlink uplink OFDMA puzzle.</p>

<p>Known facts and current hypotheses are as follows.</p>

<ul>
  <li>The fractional carrier frequency offset (fractional subcarrier spacing offset) has already been estimated and corrected.</li>
  <li>The integer carrier frequency offset (integer multiples of the subcarrier spacing) still requires estimation and is currently uncertain.</li>
</ul>

<p>This is because the exact Starlink RU-to-subcarrier mapping is unknown. Even if an RU is shifted by several subcarriers, we can still observe the constellation on those subcarriers.</p>

<p>In addition, the Starlink terminal performs frequency hopping across eight uplink channels, each 62.5 MHz wide. This is likely related to satellite and beam frequency planning. We also do not know whether the inherent frequency offset changes when the terminal hops back to the first channel, although the receive frequency of my AD9361 remains fixed throughout the experiment.</p>

<p>Because of this unknown integer frequency offset, there are two possible ways to align the frequency-domain results of the eight packet types:</p>

<ol>
  <li>Align the DC spikes.</li>
  <li>Align the points where the spectrum edges fall to the noise floor.</li>
</ol>

<p>Method 2 is used here because it is unclear whether the frequency offset remains constant each time the terminal returns to the first channel. This is also why the DC spikes appear at slightly different locations in the figure.</p>

<p>The measured RU edge subcarrier indices and DC spike indices for the eight packet types are listed below. The subcarrier index range is −512 to 511.</p>

<p>If only one pair of RU edge indices is present, the packet contains one RU. If two pairs are present, the packet contains two RUs.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pkt style 1
RU edge subcarrier indices: -260   -9
DC index: -2

pkt style 2
RU edge subcarrier indices: -508   -7    10   261
DC index: -1

pkt style 3
RU edge subcarrier indices: 67   507
DC index: -1

pkt style 4
RU edge subcarrier indices: -508   -320
DC index: 8

pkt style 5
RU edge subcarrier indices: -260   -9    8   507
DC index: -4

pkt style 6
RU edge subcarrier indices: -318   -130
DC index: 9

pkt style 7
RU edge subcarrier indices: -508   -446
DC index: -1

pkt style 8
RU edge subcarrier indices: -508   -5
DC index: -1
</code></pre></div></div>

<p>Who is ready to take on the challenge?</p>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="Wi-Fi" /><category term="WiFi" /><category term="802.11ax" /><category term="OFDMA" /><category term="RU" /><category term="RU-Allocation" /><category term="LNB" /><category term="SDR" /><category term="AD9361" /><category term="FPGA" /><category term="Uplink" /><summary type="html"><![CDATA[I collected more uplink signals from a Starlink Mini terminal and observed different RU (Resource Unit, borrowing the Wi-Fi OFDMA terminology) sizes used during transmission.]]></summary></entry><entry><title type="html">Starlink uplink signal analysis (3): demodulation is successful</title><link href="http://sdr-x.github.io/starlink3/" rel="alternate" type="text/html" title="Starlink uplink signal analysis (3): demodulation is successful" /><published>2026-06-13T12:04:00+00:00</published><updated>2026-06-13T12:04:00+00:00</updated><id>http://sdr-x.github.io/starlink3</id><content type="html" xml:base="http://sdr-x.github.io/starlink3/"><![CDATA[<p><img src="../media/ltf2-constellation-after-fo-correction.png" alt="" /></p>

<p>As described in this paper (https://arxiv.org/abs/2304.09535), a 14 GHz LNB can easily capture transmitted signals from Starlink terminals. Thanks to Starlink’s rapid expansion and widespread adoption across Europe, I was able to perform this experiment myself (Yes I have one).</p>

<p>Just search “Ku band LNB 12.8GHz” on Aliexpress.</p>

<p><img src="../media/starlink-mini-lnb-setup.jpg" alt="" /></p>

<p><img src="../media/ku-band-lnb-14GHz.jpg" alt="" /></p>

<p>The 60MHz uplink baseband sampling rate of Starlink is fully within the capabilities of the AD9361. Conveniently, I had several AD9361-based SDRs available (thanks to supporters). Although streaming a 60Msps signal in real time over a 1Gbps Ethernet link is not feasible, it is still possible to trigger a capture, store the packet inside the FPGA, and then transfer it out at a slower rate. This allowed me to obtain complete packets with the full 60 MHz bandwidth.</p>

<p>One frequently occurring ultra-short uplink packet is shown below.</p>

<p>The IQ capture:</p>

<p><img src="../media/starlink-ul-short-pkt-type-0-iq.png" alt="" /></p>

<p>The analysis result:</p>

<p><img src="../media/starlink-ul-short-pkt-type-0.png" alt="" /></p>

<p>The Starlink uplink baseband sampling rate is 60 Msps.</p>

<p>The first 48 + 128 × 8 = 1072 samples (17.8667 μs) form the STF (Short Training Field). It consists of a 48-sample cyclic prefix (CP) followed by eight repetitions of a 128-sample sequence across the full bandwidth. The first 128-sample sequence has a 180° phase offset relative to the other seven sequences.</p>

<p>The next two 1072-sample sections are OFDM symbols corresponding to the LTF (Long Training Field). Each consists of a 48-sample CP and a 1024-sample symbol body (FFT length = 1024). Both use a scheme similar to the Cyclic Shift Diversity (CSD) employed in Wi-Fi, with a delay equal to half of the CP length, i.e., 24 samples.</p>

<p>Only 252 subcarriers are active in this sample of LTFs, occupying just one-quarter of the total bandwidth.</p>

<p>Another interesting observation is that the carrier frequency offset (CFO) continuously changes across the three signal segments (STF, LTF1, and LTF2). This may be caused by hardware warm-up drift, or it may be part of a Doppler pre-compensation mechanism.</p>

<p>This becomes particularly interesting when compared with Wi-Fi uplink OFDMA (client to access point), which was introduced since Wi-Fi6/802.11ax.</p>

<p>Starting from Wi-Fi 6, multiple users can transmit simultaneously to an access point through OFDMA, with different users occupying different resource units (RUs, subbands). However, due to legacy compatibility requirements, before the actual OFDMA uplink transmission begins, every user transmits several identical full-bandwidth legacy fields (L-STF, L-LTF, L-SIG, RL-SIG, etc.), wasting both time and energy. Only afterward do users transmit data within their assigned RU/subband.</p>

<p>Starlink has no such legacy burden. The terminal transmits only a single full-bandwidth STF. After that, time-frequency resources are already divided into subbands (one-quarter bandwidth in this example) and further separated using CSD. This allows the satellite to separate signals from different terminals at a much earlier stage and greatly reduces potential contention and collisions during initial uplink access. It is a very clean and efficient design.</p>

<p>The successful demodulation procedure was:</p>

<ul>
  <li>Estimate the CP and FFT lengths (with the help of publicly available information, such as papers on the downlink signal).</li>
  <li>Perform the FFT from the expected offset to take a look.</li>
  <li>Estimate and compensate the carrier frequency offset (integer times of the subcarrier width).</li>
  <li>Estimate and compensate the carrier frequency offset (fractional times of the subcarrier width), which is interestingly different for STF, LTF1, and LTF2</li>
  <li>Plot the constellation.</li>
</ul>

<p>Because my receiver was located very close to the terminal, the channel can be approximated as AWGN, making channel estimation and equalization unnecessary.</p>

<p>The FFT results and demodulated constellations for the two LTF symbols are shown below.</p>

<p><img src="../media/ltf1-fft-after-fo-correction.png" alt="" /></p>

<p><img src="../media/ltf1-constellation-after-fo-correction.png" alt="" /></p>

<p><img src="../media/ltf2-fft-after-fo-correction.png" alt="" /></p>

<p><img src="../media/ltf2-constellation-after-fo-correction.png" alt="" /></p>

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'jiaoxianjun'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-01GGQ8JZW7"></script>

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-01GGQ8JZW7');
</script>

<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1542618827905251" crossorigin="anonymous"></script>]]></content><author><name>Jiao Xianjun</name></author><category term="starlink" /><category term="OFDM" /><category term="Starlink" /><category term="Wi-Fi" /><category term="WiFi" /><category term="802.11ax" /><category term="OFDMA" /><category term="STF" /><category term="LTF" /><category term="LNB" /><category term="SDR" /><category term="AD9361" /><category term="FPGA" /><category term="CSD" /><summary type="html"><![CDATA[]]></summary></entry></feed>