<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Wifi on Insignificant Bits</title>
    <link>https://bobcopeland.com/blog/tags/wifi/</link>
    <description>Recent content in Wifi on Insignificant Bits</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Thu, 07 Dec 2017 20:20:25 +0000</lastBuildDate>
    <atom:link href="https://bobcopeland.com/blog/tags/wifi/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Router redux</title>
      <link>https://bobcopeland.com/blog/2017/12/router-redux/</link>
      <pubDate>Thu, 07 Dec 2017 20:20:25 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2446</guid> 
      <description>&lt;p&gt;I had just a little bit of downtime over the last few weeks while Angeline and I reacquainted ourselves with how to take care of an infant. It&amp;rsquo;s like riding a bicycle: there are tons of things you forgot since last time.&lt;/p&gt;
&lt;p&gt;One of the long-on-my-todo-list items finally got completed: I upgraded all of my wifi routers. I have 5: an old dual band 11n router and four TP-Link 11ac units, all of which were running some oldish build of OpenWRT.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Encrypted mesh PSA</title>
      <link>https://bobcopeland.com/blog/2016/10/encrypted-mesh-psa/</link>
      <pubDate>Mon, 31 Oct 2016 13:32:19 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2318</guid> 
      <description>&lt;p&gt;I&amp;rsquo;m a bit late writing this up, as lately wifi stuff has taken a back seat to the day job. But, I&amp;rsquo;ve now seen the following issue reported more than once, so hopefully this post will save the other two mesh users some grief.&lt;/p&gt;
&lt;p&gt;If you are running an encrypted mesh on wpa_supplicant or (ye gods) authsae, take note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Encrypted mesh on kernel 4.8 will not interoperate with kernel &amp;lt; 4.8&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;wpa_supplicant 2.6 will not interoperate with 2.5&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;authsae as of commit 706a2cf will not interoperate with that of commit 813ec0e [1]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;wpa_supplicant 2.6 and authsae commit 706a2cf require additional configuration to work with kernel &amp;lt; 4.8 (see below).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>On Drawing Squares</title>
      <link>https://bobcopeland.com/blog/2016/04/on-drawing-squares/</link>
      <pubDate>Sun, 03 Apr 2016 21:24:05 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2286</guid> 
      <description>&lt;p&gt;I&amp;rsquo;ve been looking at the sample drawing in &lt;a href=&#34;https://github.com/bcopeland/speccy&#34;&gt;speccy&lt;/a&gt; to try and speed it up. For a given frame, it renders about 10000 points as 9-pixel anti-aliased squares using Cairo, in Python. On my desktop (Debian stable, Nouveau driver) it gets a pokey 1 FPS.&lt;/p&gt;
&lt;p&gt;My graphics knowledge is about 20 years old at this point, and while I did once know various arcane tricks on the hardware of the day, none of that is relevant now. So I know basically nothing about modern graphics. It is still not clear to me to what extent the 2D primitives use acceleration, and it doesn&amp;rsquo;t help much that, in as many years that I&amp;rsquo;ve been asleep on this topic, there seems to have been as many new APIs introduced and retired: today there are at least XRender, XAA, EXA, UXA, SNA, and Glamor &amp;ndash; did I miss any?&lt;/p&gt;</description>
    </item>
    <item>
      <title>sae.py</title>
      <link>https://bobcopeland.com/blog/2015/12/sae-py/</link>
      <pubDate>Thu, 31 Dec 2015 23:57:47 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2250</guid> 
      <description>&lt;p&gt;For a while now, I&amp;rsquo;ve wanted an easy way to decrypt a mesh packet capture when I know the SAE passphrase. This would be quite handy for debugging.&lt;/p&gt;
&lt;p&gt;I reasoned that, if I knew the shared secret, and had captured the over-the-air exchange, it should be possible to make such a tool, right? We know everything each station knows in that case, don&amp;rsquo;t we?&lt;/p&gt;
&lt;p&gt;So I spent a bit of time last week reimplementing &lt;a href=&#34;https://github.com/bcopeland/wifi-crypto/blob/master/sae.py&#34;&gt;SAE in python&lt;/a&gt; to come to grips with its various steps. And I found my reasoning was flawed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fake SNRs</title>
      <link>https://bobcopeland.com/blog/2015/09/fake-snrs/</link>
      <pubDate>Mon, 21 Sep 2015 13:13:51 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2225</guid> 
      <description>&lt;p&gt;With the addition of per-link signal levels that I added over the weekend, my &lt;a href=&#34;https://github.com/bcopeland/wmediumd&#34;&gt;wmediumd fork&lt;/a&gt; leveled up from &amp;ldquo;mere curiosity&amp;rdquo; to &amp;ldquo;potentially useful someday.&amp;rdquo; For the case of mesh, this means you can use signal levels to inform how HWMP will create the mesh paths.&lt;/p&gt;
&lt;p&gt;For example, as a test I was able to validate &lt;a href=&#34;https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bc3ce0b0be6b85e738e80ed25b52ad940f34b921&#34;&gt;this fix&lt;/a&gt;, by setting up a virtual 4-node mesh with a bad path and a good path. With the patch reverted, the bad path was almost always selected due to its PREQs being received at the target first. [In actuality, this test will exhibit frequent path swapping because the order in which the PREQs are received is essentially random, a finding in &amp;ldquo;Experimental evaluation of two open source solutions for wireless mesh routing at layer two&amp;rdquo; by Garroppo et al. Wmediumd doesn&amp;rsquo;t show this yet because frames are mostly received and queued in-order. At the time of the patch, I validated it in an actual 15-node mesh.]&lt;/p&gt;</description>
    </item>
    <item>
      <title>tmux &#43; wmediumd</title>
      <link>https://bobcopeland.com/blog/2015/09/tmux-wmediumd/</link>
      <pubDate>Sun, 13 Sep 2015 16:39:23 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2220</guid> 
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/bcopeland/wmediumd&#34;&gt;Wmediumd&lt;/a&gt; gained the ability to do a simple contention simulation a while ago. It turned out to be a small change to the existing code: just ensure that any new frames are scheduled after any other queued frames of equal or higher priority from any other station.&lt;/p&gt;
&lt;p&gt;Assuming the simulation is accurate, we might use this to gather some information about different kinds of wireless network topologies. For example: what is the throughput and latency like for a mesh network, as a function of hops?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weekend updates</title>
      <link>https://bobcopeland.com/blog/2015/09/weekend-updates/</link>
      <pubDate>Mon, 07 Sep 2015 00:20:50 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2210</guid> 
      <description>&lt;p&gt;More updates to &lt;a href=&#34;https://github.com/bcopeland/speccy&#34;&gt;speccy&lt;/a&gt; pushed to github this weekend. It gained the ability to toggle on-and-off line and scatter plots. Also, it now takes care of enabling spectral scan and then scanning channels (by exec()-ing iw, naughty me) so you can just tell it the device and it does the rest. Code is still ugly but gradually taking shape. There&amp;rsquo;s an &lt;a href=&#34;https://bobcopeland.com/blog/images/lj/speccy-anim.gif&#34;&gt;animated gif&lt;/a&gt; for those that want to see what it currently looks like in operation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>time vs frequency</title>
      <link>https://bobcopeland.com/blog/2015/09/time-vs-frequency/</link>
      <pubDate>Wed, 02 Sep 2015 13:29:22 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2207</guid> 
      <description>&lt;p&gt;This is roughly what I had in mind for the time/frequency plot for &lt;a href=&#34;http://github.com/bcopeland/speccy&#34;&gt;my little spectrum visualizer&lt;/a&gt;. Time is on the y-axis and frequency on the x-axis. There are some interesting artifacts here, especially on the higher channels. Probably bugs in my implementation, but we&amp;rsquo;ll see as I develop it further.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://bobcopeland.com/blog/images/lj/speccy-time.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Speccy with labels</title>
      <link>https://bobcopeland.com/blog/2015/08/speccy-with-labels/</link>
      <pubDate>Mon, 31 Aug 2015 01:49:56 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2204</guid> 
      <description>&lt;p&gt;I messed around with &amp;ldquo;&lt;a href=&#34;https://github.com/bcopeland/speccy&#34;&gt;speccy&lt;/a&gt;&amp;rdquo; a bit today to see what I could do with it to make it look slightly nicer. It really needed a grid so one can more easily see the frequencies and power levels. So now it looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://bobcopeland.com/blog/images/lj/speccy2.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;(This is with iperf running on channel 6 to a nearby AP).&lt;/p&gt;
&lt;p&gt;I have in mind a couple of other visualizations. An obvious one is to show the overall max or average power level rather than a scatter plot. This would be a cleaner display, although there could be co-channel interference sources you wouldn&amp;rsquo;t see that way. Here&amp;rsquo;s a first cut at that:&lt;/p&gt;</description>
    </item>
    <item>
      <title>VHT mesh</title>
      <link>https://bobcopeland.com/blog/2015/07/vht-mesh/</link>
      <pubDate>Tue, 14 Jul 2015 04:43:30 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2200</guid> 
      <description>&lt;p&gt;&amp;hellip;is a thing now.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# iw dev
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;phy#0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Interface wlan0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		ifindex 4
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		wdev 0x1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		addr 30:b5:c2:fb:34:d8
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		type mesh point
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		channel 149 (5745 MHz), width: 80 MHz, center1: 5775 MHz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# iperf -c 192.168.1.20
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Client connecting to 192.168.1.20, TCP port 5001
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TCP window size: 43.8 KByte (default)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[  3] local 192.168.1.21 port 34175 connected with 192.168.1.20 port 5001
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[ ID] Interval       Transfer     Bandwidth
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[  3]  0.0-10.0 sec   148 MBytes   124 Mbits/sec
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>DWM-W034 UART</title>
      <link>https://bobcopeland.com/blog/2015/05/dwm-w034-uart/</link>
      <pubDate>Fri, 15 May 2015 13:43:56 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2194</guid> 
      <description>&lt;p&gt;In response to my &lt;a href=&#34;https://bobcopeland.com/blog/2015/05/reserialized/&#34;&gt;previous post&lt;/a&gt; about UART access on the &lt;a href=&#34;https://wikidevi.com/wiki/ALFA_Network_AWUS036NHA&#34;&gt;Alfa AWUS036NHA&lt;/a&gt;, I got a nice email from Jim Ewing about the DWM-W034, an ath9k_htc device that apparently is embedded inside HDTVs and readily available for $10. He found the TX/RX pins on the board, and it looks like it would be a bit easier to put a socket on one of these compared to the Alfa since there are no pesky chips nearby.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reserialized</title>
      <link>https://bobcopeland.com/blog/2015/05/reserialized/</link>
      <pubDate>Sun, 10 May 2015 04:17:32 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2187</guid> 
      <description>&lt;p&gt;I got a shiny new device today and the first thing I did was crack it open and heat it to 680 degrees. A good feeling.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://bobcopeland.com/blog/images/lj/ath9k-htc.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;The device in question is an ath9k_htc USB wifi dongle. A colleague suggested this one has an easy to access UART because they brought out the TX/RX pins out from the SoC to dedicated pads. He and I apparently have different definitions for &amp;ldquo;easy.&amp;rdquo; Unlike the TP-Link routers which give you through-holes to work with, these are simply SMT pads, and they are tiny in comparison. My soldering iron tip is at least double the size of the pad. Yes, it is somewhat better than trying to solder directly to the pins on the SoC, but not by a whole lot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>serialized</title>
      <link>https://bobcopeland.com/blog/2015/02/serialized/</link>
      <pubDate>Fri, 20 Feb 2015 13:20:01 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2150</guid> 
      <description>&lt;p&gt;&lt;a href=&#34;https://www.flickr.com/photos/bluesterror/16395680778&#34; title=&#34;router += serial by bluesterror, on Flickr&#34;&gt;&lt;img alt=&#34;router += serial&#34; loading=&#34;lazy&#34; src=&#34;https://farm9.staticflickr.com/8574/16395680778_423e50c049_m.jpg&#34;&gt;&lt;/a&gt; My ath10k-based router now has serial headers, after I managed to crash it a few times over the weekend while testing out some patches. Thank you, TP-Link, for making the pins so easily accessible, to the extent that it&amp;rsquo;s easier to whip out the soldering iron than remind oneself how to setup kexec/kdump.&lt;/p&gt;
&lt;p&gt;I do need to get one of these &lt;a href=&#34;http://www.aliexpress.com/item/Free-shipping-New-USB-to-TTL-Serial-Cable-Adapter-FTDI-Chipset-PL2303HX-Cable-Computer-Cable/1937177626.html&#34;&gt;nifty usb-serial cables&lt;/a&gt; so that the JTAG ribbon cable + FTDI-breakout-on-a-breadboard monstrosity can go back into the
parts bin, but it is working fine otherwise. [The pictured 7-segment display and TTL chips are just misdirection, by the way.]&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spectrum</title>
      <link>https://bobcopeland.com/blog/2014/12/spectrum/</link>
      <pubDate>Mon, 01 Dec 2014 13:48:42 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2125</guid> 
      <description>&lt;p&gt;The ath9k and later chips support a spectral scan feature for measuring channel occupancy. I played with it for the first time last week over the Thanksgiving holiday. Simon Wunderlich&amp;rsquo;s &lt;a href=&#34;https://github.com/simonwunderlich/FFT_eval&#34;&gt;FFT_eval&lt;/a&gt; is a great tool to look at the captured RF spectrum, but I found myself wanting something more real-time, and the various other things I found on github with that aim didn&amp;rsquo;t work for me. So, this &lt;a href=&#34;https://github.com/bcopeland/speccy&#34;&gt;too-ugly-to-live python hack&lt;/a&gt; happened.&lt;/p&gt;</description>
    </item>
    <item>
      <title>wmediumd speed test</title>
      <link>https://bobcopeland.com/blog/2014/09/wmediumd-speed-test/</link>
      <pubDate>Mon, 29 Sep 2014 05:19:41 +0000</pubDate>
       <guid isPermaLink="false">http://bobcopeland.com/blog/?p=2088</guid> 
      <description>&lt;p&gt;Thanks to some inquries on linux-wireless, I took a look at wmediumd recently. The code could use a bit of work, and there are some features I&amp;rsquo;ve been meaning to add since forever, so I started gutting it with an eye towards sprucing up the architecture and feature set (changes can be found &lt;a href=&#34;https://github.com/bcopeland/wmediumd/tree/add_per_model&#34;&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;One of the questions from the mailing list was whether wmediumd adds a lot of overhead compared to mac80211_hwsim. It is of course doing more work, with additional memory copies, context switches, etc &amp;ndash; but is it enough to make wmediumd unworkable?&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
