<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pi on Andrew's Memory Blog</title><link>https://andrewmemory.acornwall.net/tags/pi/</link><description>Recent content in Pi on Andrew's Memory Blog</description><generator>Hugo -- gohugo.io</generator><image><url>https://andrewmemory.acornwall.net/img/rss_image.png</url><title>Pi on Andrew's Memory Blog</title><link>https://andrewmemory.acornwall.net/</link></image><language>en</language><managingEditor>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</managingEditor><webMaster>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</webMaster><copyright>Copyright 2009--2025</copyright><lastBuildDate>Tue, 25 Dec 2018 20:20:17 -0700</lastBuildDate><atom:link href="https://andrewmemory.acornwall.net/tags/pi/index.xml" rel="self" type="application/rss+xml"/><item><title>Changing AllStar screen resolution</title><link>https://andrewmemory.acornwall.net/blog/2018-12-25-changing-allstar-screen-resolution/</link><pubDate>Tue, 25 Dec 2018 20:20:17 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2018-12-25-changing-allstar-screen-resolution/</guid><description>
&lt;h2 class="relative group"&gt;The Problem
&lt;div id="the-problem" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-problem" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;I recently became interested in &lt;a href="https://wiki.allstarlink.org/wiki/Main_Page" target="_blank" rel="noreferrer"&gt;AllStarLink&lt;/a&gt;, and had a &lt;a href="https://hamvoip.org/#download" target="_blank" rel="noreferrer"&gt;HamVoip image&lt;/a&gt; installed on a Raspberry Pi. (I was using &amp;ldquo;RPi2-3 includes 3B+ Image Version 1.5rc19&amp;rdquo;.)&lt;/p&gt;
&lt;p&gt;The AllStarLink image booted to 1366x768, which was the screen&amp;rsquo;s default resolution. However, the screen itself was a 7 inch HDMI screen. That was hard to read.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Things that didn&amp;rsquo;t work
&lt;div id="things-that-didnt-work" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#things-that-didnt-work" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;I decided to change the resolution by editing /boot/cmdline.txt. My first attempt was to add:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;framebuffer_width=720
framebuffer_height=400&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;before the root= line at the beginning of the file. That resulted in a kernel panic:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;After a while, I realized that root= had to come first. Then I tried:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;root=/dev/mmcblk0p2 rw rootwait bcm2708_fb.fbwidth=720 bcm2708_fb.fbheight=400
console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0
smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop
hdmi_safe=1
hdmi_group=1
hdmi_mode=1&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;but my cmdline.txt values seemed to be ignored.&lt;/p&gt;
&lt;p&gt;Finally I wised up: apparently when the Pi reads the root line it starts booting, ignoring everything after it in cmdline.txt. So, I had to pass the video size as a kernel parameter instead.&lt;/p&gt;
&lt;p&gt;I did:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;cat /proc/cmdline&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;and saw:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;8250.nr_uarts=0 bcm2708_fb.fbwidth=1366 bcm2708_fb.fbheight=768
bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000
root=/dev/mmcblk0p2 rw rootwait console=ttyS0,115200 console=tty1 selinux=0
plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyS0,115200 elevator=noop&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;h2 class="relative group"&gt;The Solution
&lt;div id="the-solution" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-solution" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;(For Linux / AllStarLink newbies: in order to get to the terminal, I picked menu item 9 - open a bash shell.)&lt;/p&gt;
&lt;p&gt;I went into /boot/cmdline.txt with a text editor:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;nano /boot/cmdline.txt&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;and inserted the following two parameters on the existing line that begins with &amp;ldquo;root=&amp;rdquo;:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;bcm2708_fb.fbwidth=720 bcm2708_fb.fbheight=400&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;I put these right after the &lt;strong&gt;rootwait&lt;/strong&gt; parameter, so in /boot/cmdline.txt I now had:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;root=/dev/mmcblk0p2 rw rootwait bcm2708_fb.fbwidth=720 bcm2708_fb.fbheight=400
console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0
smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;(Note that root line is all one long line - not broken up with line separators!)&lt;/p&gt;
&lt;p&gt;Once I did that and saved it, the Raspberry Pi booted up in glorious 80x25 text. Now we could read it!&lt;/p&gt;</description></item><item><title>Mounting a Pi with Wheezy read-only</title><link>https://andrewmemory.acornwall.net/blog/2016-04-06-mounting-a-pi-with-wheezy-read-only/</link><pubDate>Wed, 06 Apr 2016 23:08:22 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2016-04-06-mounting-a-pi-with-wheezy-read-only/</guid><description>&lt;p&gt;A while back, I had a need to make a Raspberry Pi have a read-only filesystem. I used the instructions at: &lt;a href="https://github.com/tvdzwan/hyperion/wiki/Make-Raspbian-Read-Only" target="_blank" rel="noreferrer"&gt;github.com/tvdzwan/hyperion/wiki/Make-Raspbian-Read-Only&lt;/a&gt; to do so.&lt;/p&gt;
&lt;p&gt;Just in case that goes away or changes, here&amp;rsquo;s what I did:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;dphys-swapfile swapoff
dphys-swapfile uninstall
update-rc.d dphys-swapfile disable
aptitude install unionfs-fuse&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Then create an executable script as follows in /usr/local/bin/mount_unionfs:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;#!/bin/sh
DIR=$1
ROOT_MOUNT=$(awk &amp;#39;$2==&amp;#34;/&amp;#34; {print substr($4,1,2)}&amp;#39; &amp;lt; /etc/fstab)
if [ $ROOT_MOUNT = &amp;#34;rw&amp;#34; ]
then
/bin/mount --bind ${DIR}_org ${DIR}
else
/bin/mount -t tmpfs ramdisk ${DIR}_rw
/usr/bin/unionfs-fuse -o cow,allow_other,suid,dev,nonempty ${DIR}_rw=RW:${DIR}_org=RO ${DIR}
fi&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Next, make / read-only and mount /etc and /var as ramdisk in /etc/fstab:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;/dev/mmcblk0p1 /boot vfat ro 0 2
/dev/mmcblk0p2 / ext4 ro,noatime 0 1
mount_unionfs /etc fuse defaults 0 0
mount_unionfs /var fuse defaults 0 0&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Finally, make the magic directories:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;cp -al /etc /etc_org
mv /var /var_org
mkdir /etc_rw
mkdir /var /var_rw
reboot&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Recently, I had to add a user to a group. To do that, I used:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;umount /etc
mount -o remount,rw /&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;to make /etc/ writable again.&lt;/p&gt;</description></item><item><title>Turning a Raspberry Pi 2 into a packet station</title><link>https://andrewmemory.acornwall.net/blog/2016-03-31-turning-a-raspberry-pi-2-into-a-packet-station/</link><pubDate>Thu, 31 Mar 2016 23:25:27 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2016-03-31-turning-a-raspberry-pi-2-into-a-packet-station/</guid><description>&lt;p&gt;I keep thinking it&amp;rsquo;s a good idea for emergency communications to have a packet station. Since I&amp;rsquo;m cheap, I didn&amp;rsquo;t want to get extra hardware - instead I wanted to use what I had. Luckily, Dire Wolf is better than any hardware packet decoder out there. Here&amp;rsquo;s how I got a working packet station on a Pi 2 running Raspbian Jessie Lite.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Connect the radio to the Pi. In my case, I had a spare Signalink SL1+ hanging around which made things easier. I  bought a &lt;a href="http://www.amazon.com/external-Adapter-Windows-Microphone-SD-CM-UAUD/dp/B001MSS6CS" target="_blank" rel="noreferrer"&gt;Syba CMedia USB sound card&lt;/a&gt; to talk from the Pi to the Signalink, and a &lt;a href="http://www.ebay.com/itm/371536438103" target="_blank" rel="noreferrer"&gt;Kenwood speaker mic cable&lt;/a&gt; to talk from the Signalink to the radio. Here&amp;rsquo;s a useful hint: the diameter of the wires in the speaker mic cable are roughly the same as the diameter of the wires in regular Ethernet cable - meaning that you can (if you&amp;rsquo;re careful) strip the outer jacket, put the inner wires in the right places of an RJ-45 connector and crimp direct to them with no soldering at all.&lt;/li&gt;
&lt;li&gt;Download and build Dire Wolf. Instructions for doing so on a Pi are &lt;a href="https://github.com/wb2osz/direwolf/blob/master/doc/Raspberry-Pi-APRS.pdf" target="_blank" rel="noreferrer"&gt;here&lt;/a&gt;. I mounted my home directory on a networked drive to make life easier.&lt;/li&gt;
&lt;li&gt;Configure Dire Wolf with your callsign (I used the SSID -15 after my call) and sound card. Be sure to avoid the &amp;ldquo;# ADEVICE - plughw:1,0&amp;rdquo; line - it looks a lot like the correct &amp;ldquo;ADEVICE  plughw:1,0&amp;rdquo; line, but takes input from stdin instead of the sound card.&lt;/li&gt;
&lt;li&gt;Run &amp;ldquo;direwolf&amp;rdquo; and tune the radio to 144.390 (APRS). Make sure you&amp;rsquo;re decoding packets. You might have to go to alsamixer and adjust input/output. Mine ended up being 51 for speaker, 29 and 12 for mic. Also adjust the radio volume so it&amp;rsquo;s not too high or too low. (Hit F6 to get your sound card, then F5 to see all devices. I&amp;rsquo;m not sure which mic I was using; I had two - a stereo and a mono one. The mono one was 29, the stereo one was 12.) It&amp;rsquo;s probably a good idea to turn off the squelch on the radio as well.&lt;/li&gt;
&lt;li&gt;sudo apt-get install ax25-tools ax25-apps&lt;/li&gt;
&lt;li&gt;Edit /etc/ax25/axports and set one line to: vhf   &lt;em&gt;mycall&lt;/em&gt;-15 1200 255 2 VHF link (1200 bps)&lt;/li&gt;
&lt;li&gt;Make sure all the other lines in axports have # in front of them (it doesn&amp;rsquo;t like blank lines).&lt;/li&gt;
&lt;li&gt;Run &amp;ldquo;direwolf -p&amp;rdquo; to get the KISS port. It will show up as something like /dev/pts/2. Once it&amp;rsquo;s running, move to another terminal window.&lt;/li&gt;
&lt;li&gt;Change frequency to the freq that you&amp;rsquo;re going to use.&lt;/li&gt;
&lt;li&gt;sudo /usr/sbin/kissattach /dev/pts/2 vhf &lt;em&gt;(your IP address in AMPR 44.0.0.0)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;sudo /usr/sbin/kissparms -p vhf -t 200 -s 20 -r 64 -l 50 -f n These parameters took a little tweaking. If the transmit delay (-t) was too big, things timed out. If it was too small, things stepped on each other. I had to adjust transmit tail delay as well (-l). I found &lt;a href="http://www.choisser.com/packet/part14.html" target="_blank" rel="noreferrer"&gt;this page&lt;/a&gt; useful for some values.&lt;/li&gt;
&lt;li&gt;sudo route del -net 44.0.0.0 netmask 255.0.0.0 (because I&amp;rsquo;d set up a route beforehand and needed to nuke it)&lt;/li&gt;
&lt;li&gt;sudo /sbin/route add -net 44.0.0.0 netmask 255.0.0.0 dev ax0&lt;/li&gt;
&lt;li&gt;ping -i 10 &lt;em&gt;(someone else&amp;rsquo;s IP who also has a machine on the AMPR 44.0.0.0 net)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Assuming that works, you might want to apt-get install telnet telnetd talk talkd and try to log into your friend&amp;rsquo;s machine or have your friend log into yours.&lt;/li&gt;
&lt;li&gt;Last but not least: I ran into problems with arp. I increased the arp timeout in /etc/sysctl.d/local.conf:&lt;code&gt;net.ipv4.neigh.default.base_reachable_time_ms=1200000&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Turning a Raspberry Pi 3 into an iBeacon</title><link>https://andrewmemory.acornwall.net/blog/2016-03-29-turning-a-raspberry-pi-3-into-an-ibeacon/</link><pubDate>Tue, 29 Mar 2016 23:31:23 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2016-03-29-turning-a-raspberry-pi-3-into-an-ibeacon/</guid><description>&lt;p&gt;Wow, that was easy. Straight out of the box, you can turn your Raspberry Pi 3 into an iBeacon. All you need is Raspbian Jessie - it&amp;rsquo;s got hcitool installed.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how to do it. First, decide on your iBeacon UUID and major/minor. For instance, I picked at random:&lt;/p&gt;
&lt;p&gt;UUID: c9407f30-f5f8-466e-aff9-25556b57fe6d Major: 179 Minor: 3&lt;/p&gt;
&lt;p&gt;Next, convert the UUID to 16 byte big-endian hex, and convert major/minor to 4 byte big-endian hex:&lt;/p&gt;
&lt;p&gt;UUID: C9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D Major: 00 B3 Minor: 00 03&lt;/p&gt;
&lt;p&gt;Plug those numbers into the magic command:&lt;/p&gt;
&lt;p&gt;sudo hcitool cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 &lt;em&gt;UUID&lt;/em&gt; &lt;em&gt;Major&lt;/em&gt; &lt;em&gt;Minor&lt;/em&gt; C8&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;sudo hcitool cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 C9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D 00 B3 00 03 C8&lt;/p&gt;
&lt;p&gt;Finally, turn advertising on with:&lt;/p&gt;
&lt;p&gt;sudo hcitool cmd 0x08 0x000A 01&lt;/p&gt;
&lt;p&gt;or turn it off with&lt;/p&gt;
&lt;p&gt;sudo hcitool cmd 0x08 0x000A 00&lt;/p&gt;
&lt;p&gt;That was too easy!&lt;/p&gt;
&lt;p&gt;Incidentally, the 4C 00 is the magic bit that says it&amp;rsquo;s an Apple product, 02 means iBeacon, 15 is the (hex) length of the remaining data. The trailing C8 is the two&amp;rsquo;s complement of the transmit power at 1m, so c8 is -56. More details can be found at: &lt;a href="https://stackoverflow.com/questions/18906988/what-is-the-ibeacon-bluetooth-profile" target="_blank" rel="noreferrer"&gt;https://stackoverflow.com/questions/18906988/what-is-the-ibeacon-bluetooth-profile&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Setting up a static IP for a Raspberry Pi over wifi using OpenBSD dhcpd</title><link>https://andrewmemory.acornwall.net/blog/2015-05-01-setting-up-a-static-ip-for-a-raspberry-pi-over-wifi-using-openbsd-dhcpd/</link><pubDate>Fri, 01 May 2015 00:54:05 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2015-05-01-setting-up-a-static-ip-for-a-raspberry-pi-over-wifi-using-openbsd-dhcpd/</guid><description>&lt;p&gt;Like the rest of the world, I wanted to have a static IP for a Raspberry Pi that was on a wifi network. Like the rest of the world, I couldn&amp;rsquo;t figure out how to do it after three attempts. At that point, like the rest of the world I gave up and decided to make my DHCP server do the work instead of the Pi.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how I did it:&lt;/p&gt;
&lt;p&gt;1. On the Pi, edit /etc/wpa_supplicant.conf and add:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;network={
    ssid=&amp;#34;My_SSID&amp;#34;
    psk=&amp;#34;My_wifi_password&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;2. Reboot and get an IP address through DHCP.&lt;/p&gt;
&lt;p&gt;3. Confirm that I can see the world with the DHCP address.&lt;/p&gt;
&lt;p&gt;4. ifconfig wlan0 and copy down the hardware Ethernet address for wlan0 (let&amp;rsquo;s pretend it was 00:11:22:33:44:56).&lt;/p&gt;
&lt;p&gt;5. Go to the box running DHCP, and add a stanza inside my shared-network:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;       host myserver {
               hardware ethernet 00:11:22:33:44:56;
               fixed-address 192.168.1.17;
               option host-name &amp;#34;myserver&amp;#34;;
       }&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;6. Kill and restart the DHCP daemon.&lt;/p&gt;
&lt;p&gt;7. Reboot the pi and confirm it&amp;rsquo;s getting the right static IP address now.&lt;/p&gt;</description></item><item><title>Setting up Direwolf/Xastir on a Raspberry Pi</title><link>https://andrewmemory.acornwall.net/blog/2015-03-22-setting-up-direwolfxastir-on-a-raspberry-pi/</link><pubDate>Sun, 22 Mar 2015 19:55:50 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2015-03-22-setting-up-direwolfxastir-on-a-raspberry-pi/</guid><description>&lt;p&gt;A long time ago I &lt;a href="https://andrewmemory.acornwall.net/tags/soundmodem/" &gt;set up Soundmodem&lt;/a&gt; for Ubuntu. Recently, I tried setting up an igate using WB2OSZ&amp;rsquo;s &lt;a href="https://github.com/wb2osz/direwolf/" target="_blank" rel="noreferrer"&gt;Direwolf&lt;/a&gt; instead. Things are much nicer these days.&lt;/p&gt;
&lt;p&gt;The Direwolf site includes a very nice guide to &lt;a href="https://github.com/wb2osz/direwolf/blob/master/doc/Raspberry-Pi-APRS.pdf" target="_blank" rel="noreferrer"&gt;setting up a Raspberry Pi as an igate&lt;/a&gt;, so I won&amp;rsquo;t go over it here. Instead, this is just to record the steps I took to set up my Raspberry Pi v2 as an igate server.&lt;/p&gt;
&lt;p&gt;1. &lt;a href="https://andrewmemory.acornwall.net/blog/2015-02-26-setting-up-raspbian-on-a-pi/" &gt;Set up the Raspberry Pi to run Raspbian&lt;/a&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Follow along with the setup guide:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo apt-get remove --purge pulseaudio # I didn&amp;#39;t need to do this since it wasn&amp;#39;t installed, but better safe than sorry
sudo apt-get install libasound2-dev xastir # Note that I&amp;#39;m installing xastir at the same time - this is different from the direwolf guide
cd ~
git clone https://www.github.com/wb2osz/direwolf
cd direwolf
git checkout 1.2
make
sudo make install
make install-rpi
make install-conf&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Next, make sure the sound card is plugged into USB (I used the bottom slot). When I plugged it in, the system rebooted, so it&amp;rsquo;s probably smart to shut down before plugging the sound card in. For a sound card, I used the &lt;a href="www.amazon.com/Syba-SD-CM-UAUD-Adapter-C-Media-Chipset/dp/B001MSS6CS" &gt;Syba SD-CM-UAUD USB Stereo Audio Adapter, C-Media Chipset from Amazon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From there, run &lt;code&gt;aplay -l&lt;/code&gt; to see: &lt;code&gt;card 1: Device [C-Media USB Audio Device], device 0: USB Audio [USB Audio]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now I know the device is card 1 device 0. We&amp;rsquo;re almost ready to edit direwolf.conf. First, though - something that wasn&amp;rsquo;t documented on the Direwolf site. Igates need a secret code so they can log into the tier 2 servers. It&amp;rsquo;s based on your callsign, and there&amp;rsquo;s a utility called callpass in Xastir that will compute it for you. &lt;code&gt;callpass {my-real-call}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This gives you a 5 or 6 digit integer that you should remember. I&amp;rsquo;ll call it {my-code}.&lt;/p&gt;
&lt;p&gt;Now edit direwolf.conf:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;uncomment ADEVICE plughw:1,0 - if you got a different number from aplay above, you might have to modify it.&lt;/li&gt;
&lt;li&gt;change MYCALL NOCALL to MYCALL {my-real-call}-10. I used -10 because that&amp;rsquo;s the APRS SSID for igates. (&lt;a href="http://aprs.org/aprs11/SSIDs.txt" target="_blank" rel="noreferrer"&gt;APRS SSIDs are documented here&lt;/a&gt;.) In the direwolf.conf that I got, the NOCALL had a ^J after it; I had to take that out&lt;/li&gt;
&lt;li&gt;uncomment IGSERVER noam.aprs2.net (maybe use a different server if you&amp;rsquo;re not in North America)&lt;/li&gt;
&lt;li&gt;uncomment IGLOGIN and change it to IGLOGIN {my-real-call} {my code}&lt;/li&gt;
&lt;li&gt;direwolf&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Yay, you&amp;rsquo;re igating. But what&amp;rsquo;s around? Set up Xastir for that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;xastir&lt;/li&gt;
&lt;li&gt;In the first menu that comes up, set your callsign to {my-real-call}-10 and (if desired) set your lat/long/position ambiguity&lt;/li&gt;
&lt;li&gt;Interface -&amp;gt; Interface Control, Add, Networked AGWPE, Add. Leave Pass-code blank, save and Start. Now you&amp;rsquo;re getting APRS from over the air displayed on your Xastir maps.&lt;/li&gt;
&lt;li&gt;Not enough for you? Interface -&amp;gt; Interface Control, Add, Internet Server, Add. Set Pass-code to {my-code}, save and Start. Now you&amp;rsquo;re getting APRS from the network as well.&lt;/li&gt;
&lt;li&gt;Want to see it on maps? I wasn&amp;rsquo;t able to get all the maps going, but things worked when I picked Maps -&amp;gt; Map Chooser and selected only Online/osm_tiled_mapnik.geo and worldhi.map.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Setting up Raspbian on a Pi</title><link>https://andrewmemory.acornwall.net/blog/2015-02-26-setting-up-raspbian-on-a-pi/</link><pubDate>Thu, 26 Feb 2015 01:56:39 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2015-02-26-setting-up-raspbian-on-a-pi/</guid><description>&lt;p&gt;These instructions are for Wheezy. &lt;a href="https://andrewmemory.acornwall.net/blog/2016-03-16-setting-up-raspian-jessie-on-a-pi" &gt;You can find updated instructions for Jessie here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been working on setting up a Raspberry Pi to do &lt;a href="http://www.aprs.org/" target="_blank" rel="noreferrer"&gt;APRS&lt;/a&gt; using &lt;a href="https://home.comcast.net/~wb2osz/site/" target="_blank" rel="noreferrer"&gt;Dire Wolf&lt;/a&gt; and &lt;a href="http://xastir.org/" target="_blank" rel="noreferrer"&gt;Xastir&lt;/a&gt;. That actually works fairly well, and I&amp;rsquo;ll write something about it later - this post is because I was using a flaky SD card, which decided to croak at an inopportune moment. Consequently, I had to reinstall Raspian again.&lt;/p&gt;
&lt;p&gt;Since it&amp;rsquo;s easier to write it down than to remember, here&amp;rsquo;s what I did:&lt;/p&gt;
&lt;h2 class="relative group"&gt;Burn the image
&lt;div id="burn-the-image" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#burn-the-image" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Get the Raspbian image from the &lt;a href="http://www.raspberrypi.org/downloads/" target="_blank" rel="noreferrer"&gt;Raspberry Pi downloads page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Unzip it on a Linux box (mine saw the SD card as /dev/sdb, use your SD card device and don&amp;rsquo;t wipe your hard drive)&lt;/li&gt;
&lt;li&gt;Pop the card out of the Linux box and into the Pi&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The command to write that I used:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo dd if=2015-01-31-raspbian.img of=/dev/sdb bs=4M&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;h2 class="relative group"&gt;Configure the Pi
&lt;div id="configure-the-pi" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#configure-the-pi" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;When the Pi boots into raspi-config, do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Expand Filesystem&lt;/li&gt;
&lt;li&gt;Change User Password&lt;/li&gt;
&lt;li&gt;Internationalisation Options / Change Locale, pick en_US UTF-8&lt;/li&gt;
&lt;li&gt;Internationalisation Options / Change timezones, pick yours&lt;/li&gt;
&lt;li&gt;Internationalisation Options / Change Keyboard Layout, pick US PC 104, accept defaults&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="relative group"&gt;Set up the network
&lt;div id="set-up-the-network" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#set-up-the-network" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;I have my Pi configured with a static IP. The first time I boot I attach a network cable.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit /etc/network/interfaces so the wired interface is static&lt;/li&gt;
&lt;li&gt;My /etc/resolv.conf was configured automatically by dhcp and was right&lt;/li&gt;
&lt;li&gt;Now would be a good time to edit /etc/hostname as well&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The iface eth0 stanza in my interfaces file looks like:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;iface eth0 inet static
address 192.168.17.15
netmask 255.255.255.0
gateway 192.168.17.1&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;h2 class="relative group"&gt;Update the OS
&lt;div id="update-the-os" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#update-the-os" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;This takes a while, but you can continue on while this is happening.&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo aptitude update
sudo aptitude dist-upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;h2 class="relative group"&gt;Add my user
&lt;div id="add-my-user" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#add-my-user" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;I don&amp;rsquo;t like to use the default user, so I add my own.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;sudo adduser myuser&lt;/li&gt;
&lt;li&gt;edit /etc/group to add my user to all the pi groups (including sudo)&lt;/li&gt;
&lt;li&gt;log out, log in - make sure I can sudo with the new user&lt;/li&gt;
&lt;li&gt;prevent login as pi&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To prevent the pi login, I do:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo vipw -s&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;and replace the password for pi with *.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Update everything else
&lt;div id="update-everything-else" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#update-everything-else" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Once the dist-upgrade has completed and it&amp;rsquo;s time to reboot:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo /sbin/shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Now you can log in again and upgrade the firmware:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo rpi-update
sudo /sbin/shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;h2 class="relative group"&gt;Get things I know I&amp;rsquo;ll need
&lt;div id="get-things-i-know-ill-need" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#get-things-i-know-ill-need" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;I like to have an emacs clone:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo aptitude install zile
zile ~/.bash_aliases
alias emacs=&amp;#39;zile&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;I also like tightvncserver:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo aptitude install tightvncserver
tightvncserver
(set password)&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Finally, make emacs the default editor by appending this to ~/.bashrc:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;export EDITOR=/usr/bin/zile&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;That&amp;rsquo;s about it.&lt;/p&gt;</description></item><item><title>Trying to resurrect a dead Linksys WRT54GS router</title><link>https://andrewmemory.acornwall.net/blog/2014-09-01-trying-to-resurrect-a-dead-linksys-wrt54gs-router/</link><pubDate>Mon, 01 Sep 2014 01:47:09 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2014-09-01-trying-to-resurrect-a-dead-linksys-wrt54gs-router/</guid><description>&lt;p&gt;I recently went through heroic efforts to bring a dead Linksys WRT54GS router back to life. These routers are great for &lt;a href="http://www.broadband-hamnet.org/%20" target="_blank" rel="noreferrer"&gt;Broadband Hamnet&lt;/a&gt; so I really wanted to get it working, but no dice.&lt;/p&gt;
&lt;p&gt;But I don&amp;rsquo;t want to forget what I did, so I&amp;rsquo;m documenting it here.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Fix the hardware
&lt;div id="fix-the-hardware" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#fix-the-hardware" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;The first problem was that the router made a strange buzzing sound. I &lt;a href="http://www.skifactz.com/wifi/disassemble_WRT54G.htm" target="_blank" rel="noreferrer"&gt;opened the router&lt;/a&gt; and discovered that LX2 in particular, but also LX1 (two chokes at the power supply input) were actually vibrating when I put my finger on them. In addition, the capacitors near it were hot to the touch.&lt;/p&gt;
&lt;p&gt;This was described &lt;a href="http://hardforum.com/showthread.php?t=1591910" target="_blank" rel="noreferrer"&gt;in this post as an electrolytic capacitor problem&lt;/a&gt;. Sure enough, when I replaced CX2 with a new 220 uF 25 V electrolytic capacitor, the device settled down. At this point, the power LED was flashing (a bad sign) but at least it was now flashing at a regular speed. While I was soldering, I took the time to add a 12-pin header to the &lt;a href="http://www.tiaowiki.com/w/Debrick_Routers_Using_JTAG_Cable#Locate_the_JTAG_Pins.2FPads_on_the_Router" target="_blank" rel="noreferrer"&gt;router&amp;rsquo;s JTAG port&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Reflash the Firmware
&lt;div id="reflash-the-firmware" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#reflash-the-firmware" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Following the &lt;a href="http://www.dd-wrt.com/phpBB2/viewtopic.php?t=51486" target="_blank" rel="noreferrer"&gt;unbrick article here&lt;/a&gt;, I wasn&amp;rsquo;t able to ping the router. No matter what, I&amp;rsquo;d get &amp;ldquo;destination host unreachable&amp;rdquo; - even though my IP was the same as the router, ostensibly. So I figured flashing was required.&lt;/p&gt;
&lt;p&gt;I started out by trying to get a SEGGER J-Link talking to the JTAG port. I used the &lt;a href="http://www.jtagtest.com/pinouts/wrt54" target="_blank" rel="noreferrer"&gt;pinouts for the WRT54G described here&lt;/a&gt; for the WRT54GS, and the &lt;a href="http://www.segger.com/interface-description.html" target="_blank" rel="noreferrer"&gt;pinouts for the J-Link described here&lt;/a&gt;. Note that RESET on the J-Link is nSRST on the WRT54GS.&lt;/p&gt;
&lt;p&gt;After I&amp;rsquo;d done that, I wasn&amp;rsquo;t able to get the J-Link talking. It looks as if the J-Link software wants to talk only to devices it knows about - or at least, that&amp;rsquo;s all I could figure out about it. Trying to set it to MIPS mode to impersonate EJTAG didn&amp;rsquo;t yield any success either.&lt;/p&gt;
&lt;p&gt;So it was time for a different option. I didn&amp;rsquo;t have a parallel port handy, but I did have a Raspberry Pi. And a wonderful individual has taken the time to &lt;a href="https://github.com/oxplot/tjtag-pi" target="_blank" rel="noreferrer"&gt;port tjtag to the Raspberry Pi&lt;/a&gt;. I cloned the Git repo to my Pi and built it. I had to use:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;git clone git://github.com/oxplot/tjtag-pi.git&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;to grab the Git repo, since https wants an auth key and I don&amp;rsquo;t have one. After that I followed the &lt;a href="https://github.com/oxplot/tjtag-pi" target="_blank" rel="noreferrer"&gt;Setup instructions&lt;/a&gt; and got tjtag built.&lt;/p&gt;
&lt;p&gt;I connected things up as described in the wiring diagram, and had success! I was able to probe the router. (I had to run sudo ./tjtag -probeonly instead of just ./tjtag.)&lt;/p&gt;
&lt;p&gt;Then I went off to the &lt;a href="http://www.tiaowiki.com/w/Debrick_Routers_Using_JTAG_Cable#Debrick_it.21" target="_blank" rel="noreferrer"&gt;tjtag instructions here&lt;/a&gt;. The first few times I did:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo ./tjtag -backup:cfe&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;I got different results. It appears that tjtag on the Pi spends so much time sending output to the console that it messes up its timing. So I redirected the output to /dev/null, and after that I got consistent backups.&lt;/p&gt;
&lt;p&gt;Once I had an nvram backup, I tried erasing the nvram:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo ./tjtag -erase:nvram&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;This worked, but didn&amp;rsquo;t solve my problem. So I thought I might have had a corrupted CFE. I located the &lt;a href="http://mirror.debrick.nl/index.php?dir=cfe%20collection%20project/Linksys/G/WRT54GS/&amp;amp;sort=size&amp;amp;sort_mode=dhttp://" target="_blank" rel="noreferrer"&gt;CFE for my router here&lt;/a&gt; and modified it to have my IP addresses using &lt;a href="http://www.bitsum.com/files/imgtool_nvram.zip" target="_blank" rel="noreferrer"&gt;imgtool_nvram&lt;/a&gt;. I used the following command:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;imgtool_nvram.exe wrt54gs1.0-CFE.
BIN et0macaddr=00:11:22:33:44:55 il0macaddr=00:11:22:33:44:56&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;(substituting my real MAC address and one higher than it.) Then I dumped that back on the Pi as CFE.BIN, and did:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo ./tjtag -flash:cfe &amp;gt; /tmp/out&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;That worked, but still no joy in Mudville after I did the flash. No matter what, when I pinged I got destination unreachable. I wondered if it was Windows messing with me, so I booted to Kali to see what happened there. Still no dice.&lt;/p&gt;
&lt;p&gt;Finally, I thought it might be a bad kernel, so I nuked it:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;sudo ./tjtag -erase:kernel&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Even with that, the router&amp;rsquo;s still not responding. Other than re-reflashing the CFE on the assumption that the bad kernel corrupted it, I&amp;rsquo;m out of ideas.&lt;/p&gt;
&lt;p&gt;Drat, I thought I had it when I saw the instructions about &lt;a href="http://www.dd-wrt.com/wiki/index.php/Recover_from_a_Bad_Flash" target="_blank" rel="noreferrer"&gt;setting the address with arp&lt;/a&gt;. (arp -s 192.168.1.1 aa-bb-cc-dd-ee-ff if you&amp;rsquo;re on Windows.) But even when I did that (using the MAC address that I flashed), I still had nothing. I even stuffed Wireshark on the end to listen for any packets. He&amp;rsquo;s dead, Jim.&lt;/p&gt;</description></item></channel></rss>