<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TT’s Jottings-Blog of VU2SWX</title>
	<atom:link href="https://brainstorms.in/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://brainstorms.in</link>
	<description>Travails of an Indian Geek</description>
	<lastBuildDate>Mon, 21 Sep 2026 16:30:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Neural Network Explainer</title>
		<link>https://brainstorms.in/?p=846</link>
		
		<dc:creator><![CDATA[VU2SWX]]></dc:creator>
		<pubDate>Mon, 21 Sep 2026 16:30:11 +0000</pubDate>
				<category><![CDATA[Computers]]></category>
		<guid isPermaLink="false">https://brainstorms.in/?p=846</guid>

					<description><![CDATA[01 — The inspiration Borrowed from the brain Your brain is built from cells called neurons. Each one collects signals from its neighbors, and if those signals add up to enough, it fires a signal of its own down a long fiber to the next cell. Nothing about a single neuron is smart — the&#8230; <a href="https://brainstorms.in/?p=846" class="more-link">Continue reading <span class="screen-reader-text">Neural Network Explainer</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">01 — The inspiration</p>



<h2 class="wp-block-heading">Borrowed from the brain</h2>



<p class="wp-block-paragraph">Your brain is built from cells called neurons. Each one collects signals from its neighbors, and if those signals add up to enough, it fires a signal of its own down a long fiber to the next cell. Nothing about a single neuron is smart — the intelligence comes from billions of them, wired together.</p>



<p class="wp-block-paragraph">An <strong>artificial neuron</strong> is a deliberately crude copy of that idea, built entirely from numbers. It keeps the shape of the original — gather signals, combine them, decide whether to pass something on — and throws away everything else.Biological neurondendritescell bodyaxonsynapsesArtificial neuroninputsx1x2x3?weighted sumoutput<strong>The two do the same job.</strong> Dendrites become numeric inputs, the cell body&#8217;s summing becomes a weighted sum, and the axon&#8217;s fire-or-don&#8217;t-fire becomes a single output number.</p>



<figure class="wp-block-image size-full"><a href="https://brainstorms.in/wp-content/uploads/2026/09/1.png"><img fetchpriority="high" decoding="async" width="754" height="424" src="https://brainstorms.in/wp-content/uploads/2026/09/1.png" alt="" class="wp-image-847" srcset="https://brainstorms.in/wp-content/uploads/2026/09/1.png 754w, https://brainstorms.in/wp-content/uploads/2026/09/1-400x225.png 400w, https://brainstorms.in/wp-content/uploads/2026/09/1-300x169.png 300w" sizes="(max-width: 754px) 100vw, 754px" /></a></figure>



<p class="wp-block-paragraph">02 — The building block</p>



<h2 class="wp-block-heading">One neuron, deciding something small</h2>



<p class="wp-block-paragraph">A single artificial neuron does three things: it multiplies each input by a <strong>weight</strong> (how much that input matters), adds a <strong>bias</strong> (a built-in nudge), and passes the result through a rule that turns the sum into an output. Here&#8217;s one deciding whether to go outside.1Sunny?value = 11Free this evening?value = 10Raining?value = 0weight 0.7weight 0.5weight ?0.9?bias ?0.5sum = 0.7Go outside<strong>0.7 × 1 + 0.5 × 1 ? 0.9 × 0 ? 0.5 = 0.7.</strong> Because the result is above zero, this neuron&#8217;s rule says &#8220;fire&#8221; — output: go outside. Change the weights and it would weigh the same facts differently.</p>



<p class="wp-block-paragraph">The weights and the bias are the only things a network actually contains. Everything you&#8217;ve heard about a network &#8220;knowing&#8221; something really means: <em>its weights happen to be set to useful values.</em></p>



<p class="wp-block-paragraph">03 — The network</p>



<figure class="wp-block-image size-full"><a href="https://brainstorms.in/wp-content/uploads/2026/09/2.png"><img decoding="async" width="754" height="424" src="https://brainstorms.in/wp-content/uploads/2026/09/2.png" alt="" class="wp-image-848" srcset="https://brainstorms.in/wp-content/uploads/2026/09/2.png 754w, https://brainstorms.in/wp-content/uploads/2026/09/2-400x225.png 400w, https://brainstorms.in/wp-content/uploads/2026/09/2-300x169.png 300w" sizes="(max-width: 754px) 100vw, 754px" /></a></figure>



<h2 class="wp-block-heading">Wiring thousands of them together</h2>



<p class="wp-block-paragraph">One neuron can only weigh a few facts. Real problems — a photo, a sentence, a sound clip — need many neurons arranged in <strong>layers</strong>: an input layer that takes in raw data, one or more hidden layers that combine it in increasingly abstract ways, and an output layer that gives the final answer.Input layerHidden layerOutput layerCatNot cat<strong>Every line is its own weight.</strong> This small example has thirty of them; a real image-recognition network has millions. Each hidden neuron combines the whole input layer in its own slightly different way, so together the layer can notice edges, then shapes, then whole features.</p>



<figure class="wp-block-image size-full"><a href="https://brainstorms.in/wp-content/uploads/2026/09/3.png"><img decoding="async" width="768" height="500" src="https://brainstorms.in/wp-content/uploads/2026/09/3.png" alt="" class="wp-image-849" srcset="https://brainstorms.in/wp-content/uploads/2026/09/3.png 768w, https://brainstorms.in/wp-content/uploads/2026/09/3-300x195.png 300w, https://brainstorms.in/wp-content/uploads/2026/09/3-400x260.png 400w" sizes="(max-width: 768px) 100vw, 768px" /></a></figure>



<p class="wp-block-paragraph">04 — Learning</p>



<h2 class="wp-block-heading">Where do the weights come from?</h2>



<p class="wp-block-paragraph">Nobody sets millions of weights by hand. Instead, the network starts with random ones — it guesses badly on purpose — and then <strong>trains</strong>: it repeats a short loop, thousands or millions of times, each time getting slightly less wrong.Show a labeled example&#8221;this photo is a cat&#8221;Network guesses&#8221;73% cat, 27% not&#8221;Measure the errorhow far off was that?Nudge every weighta little, to lower the errorrepeat, millions of times<strong>This is the whole trick.</strong> The technique for calculating exactly how to nudge each weight is called <strong>backpropagation</strong> — it traces the error backward through the network, layer by layer, so every single weight gets its own precise correction.</p>



<p class="wp-block-paragraph">Given enough labeled examples and enough loops, the weights settle into values that make good guesses — not because the network understands cats, but because those particular numbers happen to separate &#8220;cat&#8221; patterns from everything else.</p>



<figure class="wp-block-image size-full"><a href="https://brainstorms.in/wp-content/uploads/2026/09/4.png"><img loading="lazy" decoding="async" width="733" height="578" src="https://brainstorms.in/wp-content/uploads/2026/09/4.png" alt="" class="wp-image-850" srcset="https://brainstorms.in/wp-content/uploads/2026/09/4.png 733w, https://brainstorms.in/wp-content/uploads/2026/09/4-300x237.png 300w, https://brainstorms.in/wp-content/uploads/2026/09/4-400x315.png 400w" sizes="auto, (max-width: 733px) 100vw, 733px" /></a></figure>



<p class="wp-block-paragraph">05 — Putting it together</p>



<h2 class="wp-block-heading">A trained network, at work</h2>



<p class="wp-block-paragraph">Once training is done, using the network is fast and simple: one forward pass through the layers, no more adjusting. Here&#8217;s a (greatly simplified) network reading a handwritten digit.pixels inthe trained networkconfidence per digit0123456789<strong>No pixel means &#8220;seven&#8221; on its own.</strong> Each hidden neuron responds to a small pattern of pixels; combined across the layers, that adds up to one output standing far above the rest.</p>



<figure class="wp-block-image size-full"><a href="https://brainstorms.in/wp-content/uploads/2026/09/5.png"><img loading="lazy" decoding="async" width="774" height="381" src="https://brainstorms.in/wp-content/uploads/2026/09/5.png" alt="" class="wp-image-851" srcset="https://brainstorms.in/wp-content/uploads/2026/09/5.png 774w, https://brainstorms.in/wp-content/uploads/2026/09/5-300x148.png 300w, https://brainstorms.in/wp-content/uploads/2026/09/5-768x378.png 768w, https://brainstorms.in/wp-content/uploads/2026/09/5-400x197.png 400w" sizes="auto, (max-width: 774px) 100vw, 774px" /></a></figure>



<p class="wp-block-paragraph">06 — Keeping it honest</p>



<h2 class="wp-block-heading">What this picture leaves out</h2>



<p class="wp-block-paragraph">Real networks are this idea taken to extremes rather than something fundamentally different. A large language model has many layers and billions of weights instead of thirty; images pass through neurons arranged to scan for local patterns rather than see every pixel at once; and training needs carefully chosen examples, because a network only ever gets as good as what it was shown — bias in the examples becomes bias in the weights.</p>



<p class="wp-block-paragraph">It&#8217;s also worth being plain about what a network is <em>not</em> doing. It has no model of the world, no goals, and no awareness of what it&#8217;s looking at — it is a fixed mathematical function, shaped by training, that turns one set of numbers into another. That function can be extraordinarily useful without there being anyone &#8220;home&#8221; inside it.</p>



<h2 class="wp-block-heading">A short glossary</h2>



<p class="wp-block-paragraph">NeuronA unit that multiplies its inputs by weights, adds a bias, and passes the sum through an activation rule.WeightA number that scales how much one input matters to a neuron. Training is mostly the process of adjusting these.BiasAn extra number added to the sum, letting a neuron fire more or less easily regardless of its inputs.Activation functionThe rule that turns a neuron&#8217;s sum into its output — often something like &#8220;pass it through if positive, otherwise send near-zero.&#8221;LayerA group of neurons that all take input from the same previous group and hand their output to the same next group.BackpropagationThe method used during training to work out exactly how much to adjust each weight, based on how wrong the final guess was.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My new book</title>
		<link>https://brainstorms.in/?p=824</link>
		
		<dc:creator><![CDATA[VU2SWX]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 16:25:10 +0000</pubDate>
				<category><![CDATA[Computers]]></category>
		<guid isPermaLink="false">https://brainstorms.in/?p=824</guid>

					<description><![CDATA[I wrote this last December . Now available on amazon https://link.amazon/B0hjl7FoH &#8220;This post contains affiliate links. As an Amazon Associate, I earn from qualifying purchases at no extra cost to you.&#8221;]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I wrote this last December .  Now available on amazon</p>



<p class="wp-block-paragraph"><a href="https://link.amazon/B0hjl7FoH">https://link.amazon/B0hjl7FoH</a></p>



<p class="wp-block-paragraph">&#8220;This post contains affiliate links. As an Amazon Associate, I earn from qualifying purchases at no extra cost to you.&#8221;</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Thus spake vu2swx</title>
		<link>https://brainstorms.in/?p=798</link>
		
		<dc:creator><![CDATA[vu2swx]]></dc:creator>
		<pubDate>Fri, 10 Mar 2017 06:28:47 +0000</pubDate>
				<category><![CDATA[Computers]]></category>
		<guid isPermaLink="false">http://brainstorms.in/?p=798</guid>

					<description><![CDATA[My short talk on building bitx at VWN ham meet Aluva. https://youtu.be/bl5FvRUALz0 &#160;]]></description>
										<content:encoded><![CDATA[<p>My short talk on building bitx at VWN ham meet Aluva.</p>
<p><a href="https://youtu.be/bl5FvRUALz0">https://youtu.be/bl5FvRUALz0</a></p>
<p><iframe loading="lazy" title="Vu2vwn vasanth vwn ham meet 2016" width="663" height="373" src="https://www.youtube.com/embed/bl5FvRUALz0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ubuntu 16.04 Booting to text mode</title>
		<link>https://brainstorms.in/?p=785</link>
		
		<dc:creator><![CDATA[vu2swx]]></dc:creator>
		<pubDate>Thu, 08 Dec 2016 17:53:27 +0000</pubDate>
				<category><![CDATA[Computers]]></category>
		<guid isPermaLink="false">http://brainstorms.in/?p=785</guid>

					<description><![CDATA[I was trying to boot a newly installed Ubuntu box into text mode.   The usual methods failed and  after googling  a little  I figured out that  Ubuntu  16,04 uses systemd  for controlling startup services.   The solution for the problem is &#160; sudo systemctl enable multi-user.target sudo systemctl set-default multi-user.target Mapping between runlevels and systemd targets&#8230; <a href="https://brainstorms.in/?p=785" class="more-link">Continue reading <span class="screen-reader-text">Ubuntu 16.04 Booting to text mode</span></a>]]></description>
										<content:encoded><![CDATA[<p>I was trying to boot a newly installed Ubuntu box into text mode.   The usual methods failed and  after googling  a little  I figured out that  Ubuntu  16,04 uses systemd  for controlling startup services.   The solution for the problem is</p>
<p>&nbsp;</p>
<pre><code>sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target

</code></pre>
<p>Mapping between runlevels and systemd targets</p>
<table class="tg">
<tbody>
<tr>
<th class="tg-yw4l">Run Level</th>
<th class="tg-yw4l">Target</th>
</tr>
<tr>
<td class="tg-yw4l">0</td>
<td class="tg-yw4l">poweroff.target</td>
</tr>
<tr>
<td class="tg-yw4l">1</td>
<td class="tg-yw4l">rescue.target</td>
</tr>
<tr>
<td class="tg-yw4l">2,3,4</td>
<td class="tg-yw4l">multi-user.target</td>
</tr>
<tr>
<td class="tg-yw4l">5</td>
<td class="tg-yw4l">graphical.target</td>
</tr>
<tr>
<td class="tg-yw4l">6</td>
<td class="tg-yw4l">reboot.target</td>
</tr>
</tbody>
</table>
<p>If you just want to change runlevel only</p>
<pre><code>sudo systemctl isolate multi-user.target</code></pre>
<pre><code> </code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My talk at BarCamp July 2015</title>
		<link>https://brainstorms.in/?p=782</link>
		
		<dc:creator><![CDATA[vu2swx]]></dc:creator>
		<pubDate>Fri, 17 Jun 2016 02:07:03 +0000</pubDate>
				<category><![CDATA[Computers]]></category>
		<guid isPermaLink="false">http://brainstorms.in/?p=782</guid>

					<description><![CDATA[Here is my talk at BarCamp 2015. The talk is in my mother tounge,Malayalam.]]></description>
										<content:encoded><![CDATA[<p>Here is my talk at BarCamp 2015. The talk is in my mother tounge,Malayalam.</p>
<p><iframe loading="lazy" title="Layman’s Introduction to Machine Learning: Sunil Thomas Thonikuzhiyil at Barcamp Kerala Monsoon 2015" width="663" height="373" src="https://www.youtube.com/embed/Fy3a5nxq998?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Disabling touch pad while typing:- Ubuntu 14.04</title>
		<link>https://brainstorms.in/?p=773</link>
		
		<dc:creator><![CDATA[vu2swx]]></dc:creator>
		<pubDate>Sat, 09 Apr 2016 07:29:12 +0000</pubDate>
				<category><![CDATA[Computers]]></category>
		<guid isPermaLink="false">http://brainstorms.in/?p=773</guid>

					<description><![CDATA[Currently, I am using an Asus X200M netbook with ubuntu 14.04 lts. The keyboard of the netbook is slighly small compared to regular laptop. This is  a slight drawback of all netbooks.  For me it took only a couple of hours to get adjusted to the new keyboard. However, while typing, my thumb inadertently touches&#8230; <a href="https://brainstorms.in/?p=773" class="more-link">Continue reading <span class="screen-reader-text">Disabling touch pad while typing:- Ubuntu 14.04</span></a>]]></description>
										<content:encoded><![CDATA[<p>Currently, I am using an Asus X200M netbook with ubuntu 14.04 lts. The keyboard of the netbook is slighly small compared to regular laptop. This is  a slight drawback of all netbooks.  For me it took only a couple of hours to get adjusted to the new keyboard.</p>
<p>However, while typing, my thumb inadertently touches the  touch pad and the cursor jumps to some random location.  I am always using an external mouse for navigation  as  I dont like to use t touch pad . So I decided to find out a way to disable the touch pad when I am typing long documents.</p>
<p>Here are the steps for disabling and  enabling  touch pad.</p>
<p>Find out the device id of your touch pad.   Open a terminal and type<br />
<code><br />
$  xinput list<br />
</code><br />
<a href="https://brainstorms.in/wp-content/uploads/2016/04/xinput_list.png" rel="attachment wp-att-774"><img loading="lazy" decoding="async" class="wp-image-774 size-medium" src="https://brainstorms.in/wp-content/uploads/2016/04/xinput_list-300x204.png" alt="output from xinput" width="300" height="204" srcset="https://brainstorms.in/wp-content/uploads/2016/04/xinput_list-300x204.png 300w, https://brainstorms.in/wp-content/uploads/2016/04/xinput_list.png 728w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Look for the id of your touch pad. In my case the touch pad is detected as a logitec mouse and the id is 13.  The other mouse shown in the figure is my external mouse. If in doubt, remove the external mouse and re run the command to find out the correct device id.</p>
<p>In order to disable touch pad type the following command.<br />
<code><br />
$ xinput set-prop 13 "Device Enabled" 0<br />
</code><br />
You can eneable the touch pad by changing 0 to 1 in the command above.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Installing latest arduino on Ubuntu 14.04</title>
		<link>https://brainstorms.in/?p=768</link>
		
		<dc:creator><![CDATA[vu2swx]]></dc:creator>
		<pubDate>Sat, 09 Apr 2016 06:31:42 +0000</pubDate>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Gnu/Linux]]></category>
		<category><![CDATA[Micro controllers]]></category>
		<guid isPermaLink="false">http://brainstorms.in/?p=768</guid>

					<description><![CDATA[I have been   tinkering with NodeMCU devkit boards recently. The easiest way to program these little beasts is to use arduino platform and install the compilers and other tools from . Unfortunately the stock arduino shipped with ubuntu 14.04 is quite old.  You need a recent version of arduino  software. to get the esp8266&#8230; <a href="https://brainstorms.in/?p=768" class="more-link">Continue reading <span class="screen-reader-text">Installing latest arduino on Ubuntu 14.04</span></a>]]></description>
										<content:encoded><![CDATA[<p>I have been   tinkering with NodeMCU devkit boards recently. The easiest way to program these little beasts is to use arduino platform and install the compilers and other tools from . Unfortunately the stock arduino shipped with ubuntu 14.04 is quite old.  You need a recent version of arduino  software. to get the esp8266 board working.</p>
<p>Here is what I did.</p>
<p>Removed the existing arduio installation</p>
<p><figure id="attachment_771" aria-describedby="caption-attachment-771" style="width: 157px" class="wp-caption aligncenter"><a href="https://brainstorms.in/wp-content/uploads/2016/04/12923131_10209446994237789_4706198446812941289_n.jpg" rel="attachment wp-att-771"><img loading="lazy" decoding="async" class="size-full wp-image-771" src="https://brainstorms.in/wp-content/uploads/2016/04/12923131_10209446994237789_4706198446812941289_n.jpg" alt="My nodeMCU collection." width="157" height="118" /></a><figcaption id="caption-attachment-771" class="wp-caption-text">My nodeMCU collection.</figcaption></figure></p>
<p>$ sudo apt-get remove arduino</p>
<p>Download the appropriate arduino software from arduino.cc.  This is available for both 32 bit and 64 bit editions.  Choose the correct version.</p>
<p>The arduino software platfrom is written  in Java. So install java runtime.</p>
<p>$  sudo apt-get install openjdk-7-jre</p>
<p>Unzip the arduino software  and move it to an appropriate location. I moved it to  /opt.</p>
<p>tar -xJf arduino-1.6.4-linux64.tar.xz<br />
sudo mv arduino-1.6.4 /opt</p>
<p>Add appropriate path to .bashrc file.</p>
<p>I added PATH=$PATH;/opt/arduino-1.6.4/bin. Change it according to your arduino location and version.</p>
<p>Open a terminal and execute the new arduino.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Wireless on Asus X200M netbooks: Ubuntu 14.04 LTS</title>
		<link>https://brainstorms.in/?p=760</link>
		
		<dc:creator><![CDATA[vu2swx]]></dc:creator>
		<pubDate>Mon, 04 Apr 2016 07:40:56 +0000</pubDate>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Gnu/Linux]]></category>
		<guid isPermaLink="false">http://brainstorms.in/?p=760</guid>

					<description><![CDATA[We resently bought several Asus X200 series netbooks for our faculty members. The main attraction of this  cute  netbook is its  light weight and a built in HDMI port. We plan to use them extensively for   content delivery in class rooms. These  machines are really cheap, costing around Rs17000 ( around $260).  The base model&#8230; <a href="https://brainstorms.in/?p=760" class="more-link">Continue reading <span class="screen-reader-text">Wireless on Asus X200M netbooks: Ubuntu 14.04 LTS</span></a>]]></description>
										<content:encoded><![CDATA[<p>We resently bought several <a href="https://www.asus.com/in/Notebooks/X200MA/">Asus X200 series</a> netbooks for our faculty members. The main attraction of this  cute  netbook is its  light weight and a built in HDMI port. We plan to use them extensively for   content delivery in class rooms. These  machines are really cheap, costing around Rs17000 ( around $260).  The base model comes with Intel® Celeron® Dual-Core ~ 2.58 GHz Processor and 2GB ram, DOS operating system. It has an 11.6 inch LED display.</p>
<p>Our idea was to put   ubuntu 14.04 and deploy the machines. The machine has an ethernet port and wifi port.  Installation of Ubuntu 15.10 was a smooth affair.  Unfortunately, the broadcom wifi interface did  not work out of the box. Here is what I did to fix the issue.</p>
<ol>
<li>Find out which wifi chip is used.</li>
</ol>
<p>$lspci <a href="https://brainstorms.in/wp-content/uploads/2016/04/1.png" rel="attachment wp-att-763"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-763" src="https://brainstorms.in/wp-content/uploads/2016/04/1-300x79.png" alt="broadcom wifi lspci" width="300" height="79" srcset="https://brainstorms.in/wp-content/uploads/2016/04/1-300x79.png 300w, https://brainstorms.in/wp-content/uploads/2016/04/1-768x203.png 768w, https://brainstorms.in/wp-content/uploads/2016/04/1-1024x271.png 1024w, https://brainstorms.in/wp-content/uploads/2016/04/1.png 1128w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>The wifi chip is  Broadcom Corporation BCM43142. You have to download and compile the kernel module for this chip.</p>
<p>2) Make sure that the machine is connected to internet and the apt sources are properly set up</p>
<p>3) Update  the machine</p>
<p>$ sudo apt-get update</p>
<p>4) Finally instal the  bcmwl driver.</p>
<p>$ sudo apt-get install linux-headers-`uname -r` dkms build-essential bcmwl-kernel-source</p>
<p>This will downlad necessary driver  your wifi will be up and running. The above line installs <a href="https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support">dynamic kernel module support</a>  and compiles the broadcom wireless driver.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A simple Si5351A  breakout board</title>
		<link>https://brainstorms.in/?p=728</link>
		
		<dc:creator><![CDATA[vu2swx]]></dc:creator>
		<pubDate>Thu, 19 Feb 2015 16:49:10 +0000</pubDate>
				<category><![CDATA[Ham Radio]]></category>
		<guid isPermaLink="false">http://brainstorms.in/?p=728</guid>

					<description><![CDATA[I have been toying with the idea of making a Si5351A breakout board ever since I saw the chip details on Silicon labs web site. It seems  SI5351A is an ideal choice for Variable Frequency Oscillator (VFO) for a homebrewed radio.  The SI5351 is an i2c programmable any frequency clock generator. The chip can  generates&#8230; <a href="https://brainstorms.in/?p=728" class="more-link">Continue reading <span class="screen-reader-text">A simple Si5351A  breakout board</span></a>]]></description>
										<content:encoded><![CDATA[<p>I have been toying with the idea of making a Si5351A breakout board ever since I saw the chip details on Silicon labs web site. It seems  SI5351A is an ideal choice for Variable Frequency Oscillator (VFO) for a homebrewed radio.  The SI5351 is an i2c programmable any frequency clock generator. The chip can  generates up to 8 non-integer-related  frequencies from 8 kHz to 160 MHz depending on the model. There are 3 different variations of the chip currently available.  For the home brewer SI 5351A looks promising as it is available in a 10 pin MSOP package.</p>
<p>For the ham radio home brewer, such a chip which can be programmed over many ham bands offer  numerous possibilities.   The most obvious choice would be  as a VFO. Currently, the analog devices DDS chips are ruling the market. Compared to them the Silicon Labs chips are cheaper and less cumbersome to handle. I am yet to see the noise performance of these two chips compared.</p>
<p>In fact, there are a couple of commercial Si5351A breakout boards   targeted at the  home brewer. They cost around 10$. But the chip itself cost only 1.33$  on the Silicon Labs website and you need only a few  additional components to complete the board. The total cost need not be more than 3 $.  Along with a cheap Arduino clone, Si5351A gives you lot of flexibility. An added advantages is that the SI5351A  has three independent programmable clock generators. You can combine  the  VFO and   BFO  into a single chip.</p>
<p>My idea was to build a single side PCB so that any one can build one via toner transfer. Last week,  I had a long  chat  with my friend and colleague <a href="https://www.facebook.com/amaldev.venugopal">Amal Dev</a>  about designing  a simple board.  The board routing was done by Amal Dev on eagle,  We have  designed an experimental single sided board and it may not be conforming to RF design principles always.</p>
<p>For the interested home brewer a  toner transferable image is  <a href="https://drive.google.com/open?id=0B3pYV3jFvKVfRk5vSGM3eEhVdm8&amp;authuser=0">here</a>.    You can  buy the  SI5351 from <a href="http://in.rsdelivers.com/product/silicon-laboratories/si5351a-b-gt/si5351a-b-gt-clock-generator-100mhz-55-10-pin-msop/8231987.aspx">RS components</a>  or from <a href="http://www.mouser.in/Semiconductors/Clock-Timer-ICs/Clock-Generators-Support-Products/_/N-4k38u?P=1z0z33oZ1z0ruf1Z1z0wddw&amp;Keyword=si5351&amp;FS=True">Mouser</a>.  The board is to be powered from a 5v source.  The SI5351A needs 3.3v for its operation. The LM1117 is used for generating this.  Note that the LM1117  is SMD and is soldered on the copper side.  The two MOSFETs ( BS170)   are used to convert the I2C levels from 5v to 3.3v.  Check the pin outs before you solder.  The board can be directly powered from an arduino.</p>
<p>For programming the board you can try the example code from <a href="http://www.hanssummers.com/synth/si5351ademo.html#arduino">Hansummers</a>.  Alternately you can try the excellent si5351 arduino library.  <a href="http://ak2b.blogspot.in/2015/01/si5351-simple-vfo-hardware-setup.html">Tom Hall AK2B</a> has some  sample sketches using this library. Please note that I2C address of the chip may be different from those found in the above code. Please use an <a href="http://playground.arduino.cc/Main/I2cScanner">I2C scanner</a>  to find out your chips address and then modify your code accordingly.</p>
<p><figure id="attachment_734" aria-describedby="caption-attachment-734" style="width: 300px" class="wp-caption aligncenter"><a href="https://brainstorms.in/wp-content/uploads/2015/02/si1.jpg"><img loading="lazy" decoding="async" class="wp-image-734 size-medium" src="https://brainstorms.in/wp-content/uploads/2015/02/si1-300x165.jpg" alt="si5351 breakout board" width="300" height="165" srcset="https://brainstorms.in/wp-content/uploads/2015/02/si1-300x165.jpg 300w, https://brainstorms.in/wp-content/uploads/2015/02/si1-1024x563.jpg 1024w, https://brainstorms.in/wp-content/uploads/2015/02/si1.jpg 1255w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-734" class="wp-caption-text">Schematic of si5351 breakout board. Q1 and Q2 are bs170. The regulator is a smd lm1117</figcaption></figure></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><figure id="attachment_733" aria-describedby="caption-attachment-733" style="width: 300px" class="wp-caption aligncenter"><a href="https://brainstorms.in/wp-content/uploads/2015/02/Board-Total.png"><img loading="lazy" decoding="async" class="wp-image-733 size-medium" src="https://brainstorms.in/wp-content/uploads/2015/02/Board-Total-300x226.png" alt="Board-Total" width="300" height="226" srcset="https://brainstorms.in/wp-content/uploads/2015/02/Board-Total-300x226.png 300w, https://brainstorms.in/wp-content/uploads/2015/02/Board-Total.png 636w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-733" class="wp-caption-text">Si 5351 board.</figcaption></figure></p>
<p><figure id="attachment_742" aria-describedby="caption-attachment-742" style="width: 300px" class="wp-caption aligncenter"><a href="https://brainstorms.in/wp-content/uploads/2015/02/si21.png"><img loading="lazy" decoding="async" class="wp-image-742 size-medium" src="https://brainstorms.in/wp-content/uploads/2015/02/si21-300x215.png" alt="si2" width="300" height="215" srcset="https://brainstorms.in/wp-content/uploads/2015/02/si21-300x215.png 300w, https://brainstorms.in/wp-content/uploads/2015/02/si21.png 895w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-742" class="wp-caption-text">Component Placement on the Si5351 break out board.</figcaption></figure></p>
<p>The pin out of the SI5351A is shown below.</p>
<p><a href="https://brainstorms.in/wp-content/uploads/2015/02/si5351_pinout.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-743" src="https://brainstorms.in/wp-content/uploads/2015/02/si5351_pinout-300x291.png" alt="si5351_pinout" width="300" height="291" srcset="https://brainstorms.in/wp-content/uploads/2015/02/si5351_pinout-300x291.png 300w, https://brainstorms.in/wp-content/uploads/2015/02/si5351_pinout.png 828w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>A special thanks to <a href="http://amoghdesai.com/technology/electronics/si5351-multiple-clock-generator-i/">Amogh Desai </a>who tested the first version  and reported couple of errors.  Further comments and error reports are welcome.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Plug and Play DDS VFO with arduino</title>
		<link>https://brainstorms.in/?p=705</link>
		
		<dc:creator><![CDATA[vu2swx]]></dc:creator>
		<pubDate>Sat, 07 Dec 2013 07:26:33 +0000</pubDate>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Ham Radio]]></category>
		<category><![CDATA[Micro controllers]]></category>
		<guid isPermaLink="false">http://brainstorms.in/?p=705</guid>

					<description><![CDATA[I have been trying to program  cheap Chinese DDS modules recently.   I wanted to  add a DDS VFO to one of my bitx rigs. These modules are available  at $4.5 from aliexpress. They claim that it can work up to 40Mhz. I used an arduino Uno along with a rotary encoder for  controlling the module. The&#8230; <a href="https://brainstorms.in/?p=705" class="more-link">Continue reading <span class="screen-reader-text">Plug and Play DDS VFO with arduino</span></a>]]></description>
										<content:encoded><![CDATA[<p>I have been trying to program  cheap Chinese DDS modules recently.   I wanted to  add a DDS VFO to one of my bitx rigs. These modules are available  at $4.5 from aliexpress. They claim that it can work up to 40Mhz.</p>
<p>I used an arduino Uno along with a rotary encoder for  controlling the module. The DDS module pin out is shown below.</p>
<p>&nbsp;</p>
<p><a href="https://brainstorms.in/wp-content/uploads/2013/12/DDS_module_pinout.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-707" src="https://brainstorms.in/wp-content/uploads/2013/12/DDS_module_pinout-286x300.png" alt="DDS_module_pinout" width="286" height="300" srcset="https://brainstorms.in/wp-content/uploads/2013/12/DDS_module_pinout-286x300.png 286w, https://brainstorms.in/wp-content/uploads/2013/12/DDS_module_pinout.png 475w" sizes="auto, (max-width: 286px) 100vw, 286px" /></a></p>
<p>The connections to arduino and rotary encoder is  shown below.</p>
<p>&nbsp;</p>
<p><a href="https://brainstorms.in/wp-content/uploads/2013/12/dds_bb.jpg"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-708" src="https://brainstorms.in/wp-content/uploads/2013/12/dds_bb-300x222.jpg" alt="dds_bb" width="300" height="222" srcset="https://brainstorms.in/wp-content/uploads/2013/12/dds_bb-300x222.jpg 300w, https://brainstorms.in/wp-content/uploads/2013/12/dds_bb.jpg 808w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>You can download the code hosted on github <a title="Git rep for DDS" href="https://github.com/vu2swx/ddsvfo">from  here. </a></p>
<p>The code is for 40m VFO    with IF of 9Mhz.  You can easily modify it for other  bands and IFs. Additional functions can be programmed easily.</p>
<p>The DDS modules  are available on line form from many sources. The rotary encoder can be obtained from <a href="http://in.element14.com/encoders">element14</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
