tag:blogger.com,1999:blog-40238788071102249132024-03-14T01:24:05.564-07:00no place like homeAnonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.comBlogger43125tag:blogger.com,1999:blog-4023878807110224913.post-9731848773519008292014-06-17T03:49:00.001-07:002014-06-17T03:49:42.231-07:006-stage CD4013 clock divider<iframe allowfullscreen="" frameborder="0" height="270" src="//www.youtube.com/embed/m7FeflFgu5A" width="480"></iframe><br />
<p>So, following on from my last post demonstrating an Arduino-based clock divider, I made another one with just dual-flipflop (<a href="http://www.ti.com/lit/ds/schs023d/schs023d.pdf">CD4013</a>) logic chips. This design divides into powers of two, from /1 to /32, using six flipflop units. Nothing fancy or ground-breaking - just implementing something I found on Wikipedia.</p>
<p>It seems that it needs the input clock pulse voltage to be reasonably close to the IC supply voltage. When I ran it at 12V supply with 5V input pulses it didn't seem to work very well at all. 6V supply with 5V pulses seems to work quite reliably. This can be improved by feeding the input clock line with a MOSFET.</p>
<p>Essentially this is an implementation of <a href="http://en.wikipedia.org/wiki/Frequency_divider#Digital_dividers">the cascading arrangement depicted here</a>. The only parts not noted in that diagram are:</p>
<ul>
<li>The additional flipflops, which are wired in exactly the same way
<li>RESET and SET lines on each CD4013 must be tied low
<li>The usual power supply rails
</ul>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-81607402897163850182014-06-15T05:00:00.001-07:002014-06-15T05:00:19.951-07:00Arduino clock generator + divider experiment<iframe allowfullscreen="" frameborder="0" height="270" src="//www.youtube.com/embed/T863DeV31MM" width="480"></iframe>
<p>Lately I've been learning about modular synths. One of the common things modular folks use to control things is a pulsed clock. This afternoon Tiina and I wandered down to Redfern to check out a meeting of the <a href="http://nswaves.tumblr.com/">New Sound Waves</a> modular synth group. The guys there had synced up their modulars and assorted other equipment with a shared clock source and were collaboratively making music. Pretty cool stuff.</p>
<p>Anyway, I decided to try to make my own clock divider. Didn't take long to get something working, and you can see the results in the video above. The genuine Arduino Uno is generating a simple square wave on pin 13, which you can observe with the built-in LED. The Freetronics clone is triggering on the rising edge of the square wave and operating a clock divider with /1 through /8 outputs. The /1 through /4 divider outputs are attached to a little test-LED board I made a while back. You can see that it has a bug caused by my forgetting to reset the tick counter.</p>
<p>To actually use this in a modular synth it would need to tolerate inputs in the range -12V to +12V, maybe via a bunch of MOSFETs. It might be easier to just ditch the AVR and use flip-flops</p>
<script src="https://gist.github.com/indigoid/b70b4dc123fba2ea76aa.js"></script>
Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-42871702649633524732014-01-19T04:45:00.001-08:002014-01-19T04:48:10.256-08:00Rescuing an "unhappy" EM406A GPS<a href="http://imgur.com/wpXbE5V"><img src="http://i.imgur.com/wpXbE5Vl.jpg" title="Hosted by imgur.com"/></a><br />
<br />
<p>I'm not sure of exactly what happened, but while I was mucking about with my datalogger this afternoon, the EM406A GPS sensor started emitting what looked like garbage in place of the usual NMEA sentences. A little googling revealed <a href="http://forum.arduino.cc/index.php?topic=68036.0">a thread on the Arduino forums</a> which contained a link to <a href="http://diydrones.com/profiles/blogs/putting-your-em406-gps-back-in">Ken's blog post</a> over at DIYDrones. I grabbed a copy of Ken's code and tried it out.</p><br />
<p>As the comments in the code indicate, some mucking about with the baud rate was indicated. Attempts at 57600 and 38400 seemed to make no difference, but after trying 9600 baud I got a single NMEA sentence followed by a bunch of binary data (presumably SiRF), and feeling encouraged at that result, I tried the magic at 4800 baud and also changed the <i>configured</i> baud rate (see lines 53-55 in the below code) to 4800. It worked, and now my EM406A is emitting NMEA sentences and no binary SiRF data.</p><br />
<p>Along the way I adjusted the code to take advantage of the extra USARTs available on an Arduino Mega2560 board. The GPS is connected to RX1/TX1, and some status messages are emitted to the usual Serial console. After attempting the rescue process, it also starts dumping the data stream from the GPS onto the Serial console so you can see immediately if it was successful or not.</p><br />
<p>Summary: happy and very relieved - didn't want to buy another sensor! Post a comment and don't forget to thank Ken if this was useful to you - this is his rescue code, not mine!</p><br />
<script src="https://gist.github.com/indigoid/8504181.js"></script>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-63041128229017572342014-01-03T11:17:00.000-08:002014-01-03T11:17:07.963-08:00My highlights of 2013<ol><li><b>March</b>: Seeing <a href="http://www.opeth.com/home/">Opeth</a> live in concert again, at Enmore Theatre in Sydney. Mikael Akerfeldt appears to have his growl back. Hands-down the best gig I've ever been to, of any genre. Can't wait for their next tour (and mooted new album, also)</li>
<li><b>April-May</b>: Visiting the UK and especially Finland with my friend Tiina. I'd visited the UK back in 1984 when I was a wee lad, but didn't really remember anything. Was great to go back. But... <a href="https://secure.flickr.com/photos/indigoid/sets/72157633344070019/">Finland</a> was stunning. We spent two weeks exploring it. Definitely going back there. Also on the way back to the UK (we flew home from London) I ticked off another bucket-list item - we visited the original <a href="http://www.legoland.dk/en/">Legoland in Billund, Denmark</a>. I'd wanted to go there ever since I saw pictures of it (I think in one of those Lego Ideas books published by Lego) back in primary school.</li>
<li><b>June</b>: Visiting Japan very briefly, spending three nights in Tokyo, ostensibly to see Van Halen's concert at the Tokyo Dome. While there I caught up with an old friend who now lives in Tokyo, and ticked off another bucket list item - spending a few hours ogling all the wonderful things at the Toyota Automobile Museum near Nagoya. The Shinkansen (bullet train) to Nagoya was also pretty interesting.</li>
<li>October: Acquired a new motorcycle - <a href="https://secure.flickr.com/photos/indigoid/10412078823/">2013 KTM 990 SuperMoto R</a>. <i>Ludicrous</i> fun. Sounds wonderful. Somewhat impractical fuel range. Completely unsuited to highway slab rides, but brilliant for sporty rides and generally being a hooligan, which is just what I'd wanted</li>
</ol>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-1786849808719334712014-01-03T10:48:00.002-08:002014-01-03T11:00:26.983-08:00sampling multiple analog signals asynchronously with Arduino<p>So while I was assembling a fellow #arduino denizen's <a href="http://github.com/gordonjcp/gyoza/">synth project</a> on a breadboard, he commented that Arduino's analogRead hadn't been fast enough to read the pots. After poring over the AVR ATmega328 datasheet for a while I was able to get an interrupt-driven analog-to-digital conversion happening. This is documented in many folks' blogs but most of the pages I've seen only demonstrate one, and I needed four. His acidmatic synth is now rather a lot of fun to twiddle, and I will keep hacking on it, and build a permanent version in an enclosure.</p><br />
<p>Stripped-down demo code follows. Note that this requires an analog reference signal to be wired up to the AVR. This can actually be done in software if you just want it to be set at Vcc or some other voltage visible to the microcontroller, but I was getting very tired and that part of the datasheet was not making any sense. On my 16Mhz ATmega328, the below code yielded somewhere north of 2000 samples per second per pot. Easily enough for this application.</p><br />
<script src="https://gist.github.com/indigoid/8243555.js"></script><br />
Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-28860327133444312682013-07-15T07:52:00.000-07:002013-07-15T07:52:04.621-07:00PCF8574-based I2C LCD backpacks<p>So it seems that there's a lot of these about. A while back I picked up a bunch of <a href="http://cgi.ebay.com.au/ws/eBayISAPI.dll?ViewItem&item=300922342381">cheap LCD backpacks on eBay</a>, they look like this:</p><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAF2XbwOahT4SDJtMqswB2KVQwjNfoyNZLgY_Run0ZkhXX8TAbWb9gjytT8o5F990NpSBAr9_3tBg0N0z0EN9in14yc714tu2NKxEqxhXMpX_ZYmFLSSld4s8HSi7w8NuV1lJQoisSftQ/s1600/sku077364-6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAF2XbwOahT4SDJtMqswB2KVQwjNfoyNZLgY_Run0ZkhXX8TAbWb9gjytT8o5F990NpSBAr9_3tBg0N0z0EN9in14yc714tu2NKxEqxhXMpX_ZYmFLSSld4s8HSi7w8NuV1lJQoisSftQ/s400/sku077364-6.jpg" /></a></div><br />
<p>Like most of these cheap LCD backpack units, it utilises a GPIO expander chip. In this case, the chip used is a PCF8574. Most of the other I2C backpacks for Hitachi LCDs seem to utilise Microchip's MCP23008, which seems to be the little brother of the MCP23017 I've been playing with lately. So I had quite a hunt for some quick and easy code libraries to test out the backpacks with. I <a href="https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads">found one</a> in Atlassian Bitbucket. I used version 1.2.1.</p><br />
<p>I then found <a href="http://arduino-info.wikispaces.com/LCD-Blue-I2C">this page</a> which describes a number of the cheap eBay backpacks and clones. The third code example worked fine with the above library.</p><br />
<p>Unfortunately, after reducing the test sketch to merely the below, it was still gobbling 4768 bytes of flash. Unacceptably large, I think.</p><br />
<script src="https://gist.github.com/indigoid/6000498.js"></script><br />
<br />
<p>At some point in the past I'd picked up a bunch of black-on-green 16x2 LCDs for next to nothing. The total cost per LCD+backpack combo should come to easily less than $10 (AUD) each, including shipping. Pretty happy with that. They even work properly!</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com1tag:blogger.com,1999:blog-4023878807110224913.post-35113026761033539752013-07-05T05:49:00.000-07:002013-07-05T05:49:36.304-07:00How I compile Stellaris projects under OSX<p>So I don't really know much about the TI Stellaris yet, having mainly used AVR chips to date. But I have a couple of the Stellaris Launchpads, and have managed to get the toolchain working under Mac OS X. I'm not going to repeat all the steps required for that here; you can use <a href="http://recursive-labs.com/blog/2012/10/28/stellaris-launchpad-gnu-linux-getting-started/">this page</a> as a good starting point for that, and noting that you can save yourself a whole bunch of time/hassle by setting up MacPorts and doing this:</p><br />
</p><tt>sudo port install arm-none-eabi-{gcc,binutils,gdb}</tt></p><br />
<p>In my <tt>$HOME/Code/stellaris</tt> directory I have a single Makefile called <tt>Makefile.simple</tt>, and a separate subdirectory for each project. Its contents look like this:</p><br />
<pre>CC=arm-none-eabi-gcc
LD=arm-none-eabi-ld
OBJCOPY=arm-none-eabi-objcopy
CPU=cortex-m4
STELLARIS_TOP=$(HOME)/build/stellaris/stellaris
CFLAGS_STELLARIS=-mthumb -mcpu=$(CPU) -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -ffunction-sections -fdata-sections -MD -I$(STELLARIS_TOP)
CFLAGS=-std=c99 -Wall -Os $(CFLAGS_STELLARIS)
LDFLAGS_LEFT=-T $(PROG).ld --entry ResetISR
LDFLAGS_RIGHT=--gc-sections
$(PROG).bin: $(PROG).o startup_gcc.o $(PROG).ld
$(LD) $(LDFLAGS_LEFT) -o $(PROG).bin $(PROG).o startup_gcc.o $(LDFLAGS_RIGHT)
$(PROG).out: $(PROG).bin
$(OBJCOPY) -O binary $(PROG).bin $(PROG).out
clean:
$(RM) $(PROG).bin $(PROG).out $(PROG).[od] startup_gcc.[od]
flash: $(PROG).out
lm4flash $(PROG).out
</pre><br />
<p>You can see in the above that <tt>STELLARIS_TOP</tt> is set to the location in which I have unpacked (actually <tt>git clone</tt>...) StellarisWare. This is provided to <tt>gcc</tt> so that it can find C include files. Adjust as necessary if you are using my Makefile</tt><br />
<br />
<p>In each project subdirectory I have a few files:</p><br />
<pre>$ ls
Makefile blinky.c blinky.ld startup_gcc.c
</pre><br />
<p>The Makefile merely <tt>include</tt>s <tt>../Makefile.simple</tt> and specifies the name of this project:</p><br />
<pre>PROG=blinky
-include ../Makefile.simple
</pre><br />
<p>The other files (<tt>blinky.ld</tt> and <tt>startup_gcc.c</tt>), at least at this learning stage, are the same for every project; I just copy them over from project to project.</p><br />
<p>To build my project, I just type <tt>make</tt>:</p><br />
<pre>$ make
arm-none-eabi-gcc -std=c99 -Wall -Os -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -ffunction-sections -fdata-sections -MD -I/Users/jslee/build/stellaris/stellaris -c -o blinky.o blinky.c
arm-none-eabi-gcc -std=c99 -Wall -Os -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -ffunction-sections -fdata-sections -MD -I/Users/jslee/build/stellaris/stellaris -c -o startup_gcc.o startup_gcc.c
arm-none-eabi-ld -T blinky.ld --entry ResetISR -o blinky.bin blinky.o startup_gcc.o --gc-sections
</pre><br />
<p>My project compiled and linked OK, so it is ready to send to the Launchpad with <tt>lm4flash</tt>:</p><br />
<pre>$ make flash
arm-none-eabi-objcopy -O binary blinky.bin blinky.out
lm4flash blinky.out
ICDI version: 9270
</pre><br />
<p>Please let me know if you found this useful! I also use a similar Makefile structure for building and flashing AVR and MSP430 projects.</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-78330644535566191332013-06-30T08:10:00.001-07:002013-06-30T08:10:41.101-07:00MCP23017 and the Bus Pirate<p>So I wired up an <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en023499">MCP23017 GPIO expander</a> to my <a href="http://www.seeedstudio.com/depot/bus-pirate-v3-assembled-p-609.html?cPath=61_68">Bus Pirate</a> and couldn't understand why it wasn't acknowledging commands. Upon closer inspection of the datasheet I discovered that it expects an extra bit set in the I2C device address byte. The datasheet refers to this as the "Device Opcode".</p><br />
<p>Thus, if your device address lines are all tied to ground, ie. an address of 0x20, the address to write to is 0x40.</p><br />
<p>Once you've connected everything, the first step is to put your Bus Pirate in I2C mode and turn on the power:</p><br />
<pre>HiZ>m4
Set speed:
1. ~5KHz
2. ~50KHz
3. ~100KHz
4. ~400KHz
(1)>1
Ready
I2C>W
POWER SUPPLIES ON
</pre><br />
<p>This example assumes you've tied all three address lines from the MCP23017 to ground, making its I2C address 0x20. Now we'll configure both IO banks to be all outputs; the 0:3 notation tells the Bus Pirate to write the value three times. The first 0 selects the IODIRA register address. The second and third 0s clear all the bits in the IODIRA and IODIRB registers, thus configuring them as outputs.</p><br />
<pre>I2C>[0x40,0:3]
I2C START BIT
WRITE: 0x40 ACK
WRITE: 0x00 ACK 0x00 ACK 0x00 ACK
I2C STOP BIT
</pre><br />
<p>Finally, we turn on all eight GPIOA pins by writing 0xFF to register 0x12.</p><br />
<pre>I2C>[0x40,0x12,0xFF]
I2C START BIT
WRITE: 0x40 ACK
WRITE: 0x12 ACK
WRITE: 0xFF ACK
I2C STOP BIT
</pre><br />
<p>As always, read the <em>fine</em> datasheet!</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-72295101137463978292013-06-30T03:02:00.000-07:002013-06-30T03:02:37.709-07:00Quickstart guide: TI MSP430 on OSX Mountain Lion<p>I had all of this stuff working on my other OSX laptop but for some reason it wasn't as trivial to setup on my new laptop as it was last time around, mainly due to the USB driver. So I thought I'd save some notes for Google's (and possibly my!) future reference.</p><br />
<p>If this all fails on Mavericks when it arrives, I'll try to remember to update it.</p><br />
<ol><li>Install Xcode (I installed the commandline tools from inside Xcode too [Xcode menu => Preferences => Downloads tab]; these are probably not actually required)</li>
<li>Install MacPorts</li>
<li>Install the toolchain bits: <br/><tt>sudo port install msp430-{binutils,gcc,gdb,libc}</tt></li>
<li>Get the fixed kernel extension source code - the TI download is broken under Mountain Lion and possibly Lion as well: <br/><tt>git clone https://github.com/freespace/ez430rf2500.git</tt></li>
<li>Follow the README.md instructions included with the ez430rf2500 source to install the driver</li>
<li>Plug in your Launchpad</li>
<li>If everything is working, this should get you to an mspdebug shell: <tt>sudo mspdebug rf2500</tt><br />
</ol>
<pre>[jslee@shamata Release] $ sudo mspdebug rf2500
MSPDebug version 0.21 - debugging tool for MSP430 MCUs
Copyright (C) 2009-2012 Daniel Beer <dlbeer@gmail.com>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Trying to open interface 1 on 002
Initializing FET...
FET protocol version is 30066536
Set Vcc: 3000 mV
Configured for Spy-Bi-Wire
fet: FET returned error code 4 (Could not find device or device not supported)
fet: command C_IDENT1 failed
fet: identify failed
Trying again...
Initializing FET...
FET protocol version is 30066536
Set Vcc: 3000 mV
Configured for Spy-Bi-Wire
Sending reset...
Device ID: 0xf201
Code start address: 0xf800
Code size : 2048 byte = 2 kb
RAM start address: 0x200
RAM end address: 0x27f
RAM size : 128 byte = 0 kb
Device: MSP430F2012/G2231
Number of breakpoints: 2
fet: FET returned NAK
warning: device does not support power profiling
Chip ID data: f2 01 01
Available commands:
= erase isearch opt run setwatch_w
alias exit load power save_raw simio
break fill load_raw prog set step
cgraph gdb locka read setbreak sym
delbreak help md regs setwatch verify
dis hexout mw reset setwatch_r verify_raw
Available options:
color gdb_loop iradix
fet_block_size gdbc_xfer_size quiet
Type "help <topic>" for more information.
Press Ctrl+D to quit.
(mspdebug) regs
( PC: 0ffff) ( R4: 0dfde) ( R8: 0fbef) (R12: 0ffdf)
( SP: 0ffff) ( R5: 0f613) ( R9: 07ffc) (R13: 0feff)
( SR: 00000) ( R6: 0edff) (R10: 0ffff) (R14: 07bef)
( R3: 00000) ( R7: 0fbef) (R11: 0cff7) (R15: 0f5fc)
0xffff:
0ffff: ff
(mspdebug)
</pre>
<p>If all this works, you should be able to compile stuff and use <tt>mspdebug</tt> to load it into MSP430 flash via the Launchpad.</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-3159236922818574072013-06-21T06:42:00.001-07:002013-07-08T22:32:49.346-07:00Van Halen @ Tokyo Superdome 2013-06-21 set list <ol><li>Unchained</li>
<li>Runnin' with the devil</li>
<li>She's the woman</li>
<li>Show your love</li>
<li>Tattoo</li>
<li>Everybody wants some</li>
<li>Somebody get me a doctor</li>
<li>Downtown</li>
<li>Hear about it later</li>
<li>Pretty woman</li>
<li>Drum & weird stuff</li>
<li>You really got me</li>
<li>Dance the night away</li>
<li>??? Synth song</li>
<li>And the cradle will rock</li>
<li>Hot for teacher</li>
<li>Women in love</li>
<li>Tora Tora???</li>
<li>Mean streets</li>
<li>Beautiful girls</li>
<li>--- Dave lee Roth (as gaijin yakuza) short film</li>
<li>DLR guitar acoustic intro to ice cream man</li>
<li>Panama</li>
<li>EVH solo thing</li>
<li>Ain't talkin' 'bout love</li>
<li>Encore: Jump</li>
</ol>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-68408437422361024332012-09-02T04:50:00.001-07:002012-09-02T04:50:13.354-07:00i2c and the Freetronics Leostick<p>So I picked up some <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en023499">MCP23017 GPIO expanders</a> after hearing about them from a friend. The only spare <a href="http://arduino.cc/">Arduino</a>-compatible boards I had were <a href="http://www.freetronics.com/products/leostick">Leosticks</a>. <a href="http://forum.freetronics.com/viewtopic.php?f=27&t=702">It seems that the i2c pins aren't in the same places</a>.<br />
<br />
<p><strong>Uno</strong>: A4/A5<br/><strong>LeoStick</strong>: D2/D3</p><br />
There's a good tutorial for using the MCP23017 with the Arduino programming environment <a href="http://tronixstuff.wordpress.com/2011/08/26/tutorial-maximising-your-arduinos-io-ports/">here</a>.Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-79773999282801709562012-06-03T07:43:00.000-07:002013-06-11T05:47:37.753-07:00Putting the Linux automounter to good use<p>I think filesystem automounters (eg. Linux <tt>autofs</tt>) are dramatically underused. They bring a lot of benefits to the table and can save you lots of typing. As an example, this evening I was building a VM on my laptop to be a build server for more Redhat-alike VMs, such as CentOS. I wanted it to be usable when disconnected (eg. flying), so I downloaded both of the CentOS 6.2 x86_64 DVDs and saved them in my ISO folder on the VM host (my MacBook Pro running OSX, but I'm sure it'd work equally well with a Linux or Windows host).</p><br />
<p>I figured I'd use VirtualBox's shared folders feature, rather than move or copy all the ISOs into the VM. This requires the VirtualBox guest additions to be installed, and provides a new filesystem type <tt>vboxsf</tt>. You mount a shared folder (for this example, named <tt>iso</tt>) thusly:</p><br />
<p><tt>mkdir /mnt/iso<br />
mount -t vboxsf iso /mnt/iso</tt></p><br />
<p>If the stars all align nicely, you can access your <tt>iso</tt> folder in the VirtualBox guest, under /mnt/iso. Now you can loopback-mount an ISO file:</p><br />
<p><tt>mkdir /mnt/centosdvd<br />
mount -o loop,ro -t iso9660 /mnt/iso/centosdvd.iso /mnt/centosdvd</tt></p><br />
<p>Wheeee, CentOS! This is all mildly annoying, though. Computers are supposed to make our lives <em>easier</em>! And going through this process over and over for lots of ISOs gets old very rapidly indeed. Thankfully, we can use the Linux automounter to simplify both tasks. First, we tell <tt>autofs</tt> about the two automount maps we're going to create; one for the shared folders, and one for the ISOs, by adding these two lines somewhere in <tt>/etc/auto.master</tt></p><br />
<p><tt>/vbox /etc/auto.vbox -n 5<br />
/iso /etc/auto.iso -n 5</tt></p><br />
<p>Then we create the two map files. They only contain one line each. This goes in <tt>/etc/auto.vbox</tt>:</p><br />
<p><tt>* -fstype=vboxsf :&</tt><br />
<br />
<p>... and this goes in <tt>/etc/auto.iso</tt> (replace <tt>iso</tt> with the name of your VBox shared folder containing ISO files, and possibly a further path inside that share, if appropriate, eg. <tt>/vbox/myshare/isofiles</tt>):</p><br />
<p><tt>* -fstype=iso9660,ro,loop :/vbox/iso/&</tt></p><br />
<p>Now reload the automounter:</p><br />
<p><tt>/etc/init.d/autofs reload</tt></p><br />
<p>... and that should be that. Try browsing your shares in <tt>/vbox</tt>. If you have an ISO file <tt>/vbox/iso/foo.iso</tt>, you should be able to see inside it by merely looking in <tt>/iso/foo.iso</tt>. Transparent, automatic, and, best of all, you only solve the problem once.</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-32109265268072411242011-09-25T06:57:00.000-07:002011-09-25T06:57:58.577-07:00And if your Xbee shield is behaving strangely...<p>If you are combining the CAN-Bus and Xbee shields from <a href="http://www.sparkfun.com">SparkFun</a>, it can be very tempting to plonk the EM406 GPS atop the nice flat prototyping area on the Xbee shield. It's a good fit there! But if stuff suddenly and inexplicably stops working, check that the GPS chassis isn't bridging the terminals on the Xbee shield's RESET switch. I felt like a real idiot :-(</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-20842057233357912322011-09-25T06:45:00.001-07:002011-09-25T06:58:53.301-07:00Arduino: combining CAN-bus and Xbee shields<div style="text-align: left; padding: 3px;"><a href="http://www.flickr.com/photos/indigoid/6181308178/" title="photo sharing"><img src="http://farm7.static.flickr.com/6160/6181308178_299555cae0.jpg" style="border: solid 2px #000000;" alt="" /></a><br />
<span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/indigoid/6181308178/">A little box of Arduino</a>, originally uploaded by <a href="http://www.flickr.com/photos/indigoid/">indigoid</a>.</span></div><br />
<p>So I created a simple little sketch, based on the TimeGPS sample that comes with the TinyGPS library, that waits for a "p" over the Xbee interface and upon receiving it, sends back the date, time, latitude and longitude data from the GPS. The CAN-bus shield uses pins 4 and 5 for the GPS serial interface. I found that the Xbee modules I have (as supplied in the SparkFun Xbee retail kit) have rather shorter range than I'd hoped for, but at least they work and I am learning about their usage. Here's the sketch:</p><br />
<pre>#include <TinyGPS.h> //http://arduiniana.org/libraries/TinyGPS/
#include <NewSoftSerial.h> //http://arduiniana.org/libraries/newsoftserial/
// GPS and NewSoftSerial libraries are the work of Mikal Hart
TinyGPS gps;
NewSoftSerial serial_gps = NewSoftSerial(4, 5); // receive on pin 3
void setup()
{
Serial.begin(9600);
serial_gps.begin(4800);
Serial.println("setup...");
}
void dump_lat_long(float flat, float flong) {
Serial.print("lat : "); Serial.println(flat);
Serial.print("long: "); Serial.println(flong);
}
#define pdec(x) { Serial.print(x,DEC); }
#define p(x) { Serial.print(x); }
#define s() p(" ")
#define d() p("-")
#define c() p(":")
void dump_datetime() {
int year;
byte month, day, hour, minutes, second, hundredths;
unsigned long fix_age;
gps.crack_datetime(&year, &month, &day, &hour, &minutes, &second, &hundredths, &fix_age);
pdec(year); d(); pdec(month); d(); pdec(day);
s();
pdec(hour); c(); pdec(minutes); c(); pdec(second); p("."); pdec(hundredths);
Serial.println();
}
void loop() {
float flat, flon;
unsigned long fix_age;
String msg;
byte havedata = 1;
byte polled = 0;
while (serial_gps.available() && !polled) {
if(gps.encode(serial_gps.read())) {
// returns +- latitude/longitude in degrees
gps.f_get_position(&flat, &flon, &fix_age);
if (fix_age == TinyGPS::GPS_INVALID_AGE) {
msg = "No fix detected";
havedata = 0;
} else if (fix_age > 5000)
msg = "Warning: possible stale data!";
else
msg = "Data is current.";
polled = 1;
if (Serial.available() && Serial.read() == 'p') {
Serial.println(msg);
if (havedata) {
dump_datetime();
dump_lat_long(flat,flon);
}
delay(100);
}
}
}
}
</pre><br />
<p>I also wrote a small Perl script that (via <tt>Device::SerialPort</tt> from CPAN) interrogates the Arduino every 5 seconds or so, using a USB-attached Xbee Explorer. For Linux you will need to change the serial port device filename to <tt>/dev/ttyS0</tt> or similar. No idea about Windows, sorry. Again, I started out with some sample code (this time from the Device::SerialPort distribution) and hacked most of it off. Code follows:</p><br />
<pre>#!/usr/bin/perl
use strict;
use warnings;
use Device::SerialPort;
my $file = "/dev/tty.usbserial-A700fbpg";
my $ob = Device::SerialPort->new ($file) || die "Can't open $file: $!";
$ob->baudrate(9600) || die "fail setting baudrate";
$ob->parity("none") || die "fail setting parity";
$ob->databits(8) || die "fail setting databits";
$ob->stopbits(1) || die "fail setting stopbits";
$ob->handshake("none") || die "fail setting handshake";
$ob->write_settings || die "no settings";
$ob->error_msg(1); # use built-in error messages
$ob->user_msg(1);
while(1) {
$ob->write("p");
print $ob->input;
sleep 5;
}
</pre></p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-76908267550745918372011-09-12T03:41:00.000-07:002011-09-12T03:41:39.701-07:00stairwell sensor light: Arduino!<p>So I wanted a small light at the bottom of the short set of stairs that lead from the door of my apartment into the main living area. I've been learning about <a href="http://www.arduino.cc/">Arduino</a> lately, so I figured this might be a practical experiment. I decided to use a reed switch to sense when the door had been opened.</p>
<p>After getting frustrated at the reed switch functioning just fine when closed (Arduino <tt>digitalRead()</tt> returning <tt>HIGH</tt>) but bouncing around randomly when it should have been staying open, I did some Googling and found that I should have used a pullup resistor to coax the current in the right direction. I don't pretend to understand why this works, but I intend to find out.</p>
<p>Anyway, I used a circuit based very much on <a href="http://arduino.cc/en/Tutorial/DigitalReadSerial">this one</a>, plus of course an RGB LED to do the actual lighting. The next step is to grab a couple more RGB LEDs (I only had one on hand that had been supplied in the <a href="http://www.sparkfun.com/products/10173">Sparkfun Inventors Kit</a>) and make it brighter.</p>
<p>Learning about and experimenting with Arduino has been a lot of fun so far. Am working on a larger project for the bike. Along the way I've dramatically improved my soldering skills, though they are still pretty terrible!</p>
<pre>
#include <Time.h>
// pins
const int reedswitch = 2;
const int red = 9;
const int green = 10;
const int blue = 11;
// door states
const int DOOR_OPEN = 0;
const int DOOR_CLOSED = 1;
// minimum time the courtesy light will stay on for (seconds)
const int MIN_OPENTIME = 10;
///////////////////////////////////////////
int door = DOOR_CLOSED;
int last_open_at = 0;
void setup() {
pinMode(reedswitch, INPUT);
setTime(0);
}
void rgbled(int r, int g, int b) {
analogWrite(red,r);
analogWrite(green,g);
analogWrite(blue,b);
}
void loop() {
int reedswitch_state = digitalRead(reedswitch);
if (reedswitch_state == HIGH && now() >= last_open_at + MIN_OPENTIME) {
door = DOOR_CLOSED;
} else if (reedswitch_state == LOW) {
last_open_at = now();
door = DOOR_OPEN;
} else {
// no change in state, do nothing
}
if (door == DOOR_OPEN) {
rgbled(255,255,255);
} else {
rgbled(0,0,0);
}
delay(500);
}
</pre>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-74162879379500191962010-12-27T05:46:00.000-08:002010-12-27T05:47:12.512-08:00K1200GT tyre pressure adjustment technique<p>
Note that this probably also works with other BMW models with the tyre pressure monitoring (RDC) option fitted, but I have only tried it on my K1200GT.</p>
<p>
If you need to adjust your tyre pressures and you don't have a tyre pressure gauge with you:</p>
<ol>
<li>ride the bike until the dash starts displaying the pressures</li>
<li>stop the bike and then stop the engine, <em>without touching the key in the ignition</em>. Use the kill-switch</li>
<li>adjust pressures, noting that as you do so, the dash display changes</li>
<li>ride the bike :-)</li>
</ol>
<p>
This may be obvious to people smarter than me. RDC is a wonderful feature to have.</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com2tag:blogger.com,1999:blog-4023878807110224913.post-68679859490642446042010-12-27T03:26:00.000-08:002010-12-27T03:28:57.848-08:00End of year roundup<p>A quick blog post to wrap up 2010...</p>
<p><strong>Work:</strong> Happy, challenged, excited. No serious complaints. Learning about AIX and Puppet, and of course Linux sysadmin continues to be my main role. Looking forward to the <a href="http://www.sage-au.org.au/">SAGE-AU</a> conference in Melbourne, in September 2011. Didn't take as much time off as I should have, but riding my bike to and from Hobart for the 2010 SAGE-AU conference was extremely satisfying and gave me a good chance to be out of the office and clear my head.</p>
<p><strong>Not-work:</strong> In May I started living and working in Sydney full-time. Have been appreciating commuting by train. I ditched my Nokia E71 for an iPhone 3GS and am loving it; it has been the single most satisfying tech purchase I have ever made. Haven't spent as much time in the gym as I should have, but this sorry state of affairs will not continue. I haven't spent nearly as much quality time with <a href="http://twitter.com/#%21/NarnieBelle">Anna</a> as I'd like (we do live in different cities, after all), but I am hoping that this can improve in 2011.</p>
<p><strong>Motorcycling, overall:</strong> I put about equal kilometres on the Dakar and K1200GT this year, and in total, rather fewer than last year. I don't have an odometer figure for the K-bike as of January 1 this year, but I do for the Dakar. A combined total of about 35000km, I think. The K1200GT odometer currently reads 51610km, and the Dakar odometer tells a very similar tale. My BMW Roadside Assistance subscription proved worthwhile as I achieved four punctured tyres in three months of riding.</p>
<p><strong>K1200GT:</strong> This year saw a lot of warranty repair work on the K-bike, mostly at the time of the 40000km service, where it was at the dealer for a month or more. It now has a K1300 gearbox and clutch, and this does appear to be a bit better than the old units, but still not nearly as good as your average Japanese bike, such as a friend's Blackbird that I had the significant pleasure of borrowing.</p>
<p><strong>F650GS Dakar:</strong> 2010 saw this bike back on the road after a bit of a hiatus, and I still have a deep, abiding love for it, especially the delightful little Rotax engine. 40000 and 50000km services were done, and I with the aforementioned Blackbird owner's help, I finished the <a href="http://www.pro-oiler.com/">Pro-Oiler</a> install. The bike still needs more work, though, needing new chain/sprockets, new tyres and (for the second time) new steering head bearings. Michelin's perennial supply problems caused me to get Pirelli's gimmicky new Angel ST tyres instead of my usual Pilot Road2, and this was a mistake that I won't repeat.</p>
<p><strong>Projects:</strong> In 2010 I acquired a Honda XL250 K0 (early 1970s model) and the other day I also acquired (Free! Thanks, Norm!) a Honda CT110 "postie" bike. The XL250 has a long road ahead, as I'd like to fully restore it. The CT110 on the other hand I would like to have registered and ridable as soon as possible. I don't think it will cost very much at all to get there. Job #1 is to transport it to my Sydney garage from its current location.</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-67186872133938487462010-09-22T07:10:00.000-07:002010-09-22T07:10:24.608-07:00Corporate acquisitions: a quick survival guide<p>Almost three years ago, my employer was acquired by its major competitor. Having been through a very similar situation at a previous employer that ended in a fairly nasty fashion, this initially had me rather worried. Now, having had time to watch the intricate corporate dances play out, I can see that the two situations are chalk and cheese, and I'm rather happy about that.</p>
<p>Along the way, I learned a few lessons. I learned them from talking to other people involved, on both sides of the corporate fence and from my own experiences.</p>
<p>Most important, I think, is to embrace change. You're going to get it, whether you like it or not. It can be very hard work to remain positive in times of corporate upheaval, especially if some of your colleagues are incurable cynics and doomsayers, but in the long run it is worth it.</p>
<p>The next most important thing, in my opinion, is to engage with your new peers. Don't just listen passively in interminable phone conferences if you can avoid it. Get over there in person and talk to them! Stop thinking of them as competition. They're people, just like you, and it is extremely likely that each side can learn something from the other.</p>
<p>One of the first serious engagements I had with my new peers was a meeting to talk about the deployment of the acquiring company's standard operating environment for corporate desktop PCs.</p>
<p>I vividly recall attending a phone conference with my manager and a group of tech and managerial staff from the other side. My manager and I were on the receiving end of what seemed like an unreasonably hard sell, and given our relative inexperience with large-scale desktop management, we were actually extremely eager to adopt the desktop standard that was being pushed at us.</p>
<p>At one point I politely interrupted the meeting and made it crystal clear that we were just as interested in it as them, since desktop management was something we'd never really succeeded at to any degree. We <em>wanted</em> them to do it so that we could get on with our real work! The SOE proponents seemed thoroughly shocked, but with that part out of the way, we got down to details that actually mattered. The sailing was much smoother after that, and the end result thoroughly positive.</p>
<p>A nice side-effect of embracing change, as we did with desktops, is that it helps your new peers to see you in a positive light right from the start. You sure don't want to be thought of as that toxic old guy in the corner who hates anything new or different. First impressions are lasting impressions.</p>
<p>That pattern has repeated several times over the last three years, and the learning has continued on both sides. There have been exceptions, of course. There were people (from <em>both</em> sides of the acquisition, it must be said) that appeared unable to fully accept the reality of the acquisition. That's fine --- it was their choice. Just don't let their choices ruin it for <em>you</em>.</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-44331994347884943762010-08-06T02:10:00.001-07:002010-08-06T02:10:09.322-07:00K1200GT updateRecently my K1200GT had its 40000km service, and at the same time I asked the dealer to investigate the gearbox and suspension.<br /><br />The gearbox had been exhibiting three nasty behaviours. <br /><br />First, it was extremely clunky. BMW bike gearboxes are infamous in this regard, but my bike was notably worse than usual.<br /><br />Second, it would occasionally pop out of gear while decelerating with the throttle closed, ie. engine braking. <br /><br />Third, it would sometimes appear to get wedged such that the gear lever had no impact on gear selection. When this happened, the gear display on the dash would go completely dark. Blipping the throttle sometimes freed up the gear selection. This was particularly annoying when pulling up at traffic lights, as I would typically be stuck in 3rd or 4th gear.<br /><br />The suspension, meanwhile, had become extremely hard and uncomfortable. Unacceptable on the Princes Hwy in Sydney.<br /><br />The dealer was happy to address these problems. The gearbox was replaced, and while they were in there they replaced the clutch as well. The entire rear suspension damper was replaced, and the ESA wiring for the front damper was also replaced. They also replaced the front brake pads and, somewhat worryingly, rebuilt the final drive unit. All of this work was warranty work and not charged for.<br /><br />I am somewhat unhappy about the whole situation. The bike, a late 2008 model, only has 45000km on it as of today. I don't expect that it has much resale value left. Will reassess the situation when the 50k service rolls around.<br />Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-61618745153873539222010-08-06T01:31:00.000-07:002010-08-06T01:47:35.346-07:00Sydney to Hobart day 1 - CanberraI left Sydney early today to visit Anna in Canberra. It was a good first test of the Jett heated vest I picked up on Wednesday. The vest exceeded my expectations. Very happy!<br /><br />Tomorrow I head to Port Melbourne to board the 1930 ferry to Devonport. The Hume route is pretty dull, especially once in Victoria where the conversion to dual carriageway was completed years ago. Am interested in how the NSW Hume upgrades are going, having not been through there in the last 12 months.<br /><br />Am feeling a bit nervous about the ferry trip across Bass Strait. Lots of people are telling me to expect seasickness...<br /><br />Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-61332403157768842672010-05-03T04:47:00.001-07:002010-05-03T04:48:33.780-07:00Delicious thumper vibes<div style="text-align: left; padding: 3px;"><a href="http://www.flickr.com/photos/indigoid/4573977743/" title="photo sharing"><img src="http://farm4.static.flickr.com/3394/4573977743_509ae4f80e.jpg" style="border: solid 2px #000000;" alt="" /></a><br /><span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/indigoid/4573977743/">Dakar shadow</a>, originally uploaded by <a href="http://www.flickr.com/people/indigoid/">indigoid</a>.</span></div>
<p>For a few weeks now I've been riding my 2007 F650GS Dakar instead of the K1200GT, due to the latter having its gearbox replaced under warranty, and also its 40000km service. I don't expect to get it back from the dealer for at least another week, possibly longer. The Dakar has been tremendous good fun, so I'm not too worried.</p>
<p>A couple of nights ago I had 15 minutes to kill on the way home, so stopped by the <a href="http://www.ramint.gov.au/">Royal Australian Mint</a> to try an arty shadow shot of my bike. I think it turned out kinda OK, but of course it could be better.</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-64596548093525241912010-03-13T03:30:00.001-08:002010-03-13T03:31:32.651-08:00Big Pig's birthday!<div style="text-align: left; padding: 3px;"><a href="http://www.flickr.com/photos/indigoid/4429237704/" title="photo sharing"><img src="http://farm3.static.flickr.com/2777/4429237704_734a5e6745.jpg" style="border: solid 2px #000000;" alt="" /></a><br /><span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/indigoid/4429237704/">Big Pig's birthday!</a>, originally uploaded by <a href="http://www.flickr.com/people/indigoid/">indigoid</a>.</span></div>
<p>Yep, I've had it for a year now.</p>
<p>I celebrated by going for a ride, of course. Went south from Mortdale along Princes Hwy past Wollongong, took the Illawarra Hwy exit to Macquarie Pass, enjoyed the challenging twisty roads therein, and stopped for a couple of chunky-beef pies at <a href="http://www.thesouthernhighlands.com.au/directory/dining/bakeries/robertson-pie-shop">Robertson Pie Shop</a>. The pie shop is a well-known friend of motorcyclists, but I'd never been there before. I have now, and am most impressed. From Robertson I continued along Illawarra Hwy through Sutton Forest, then turned right onto the Hume and headed back to Mortdale as if I was travelling from Canberra. About 270km in total, and most enjoyable. Here's a map:</p>
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com.au/maps?f=q&source=s_q&hl=en&geocode=&q=from:mortdale,nsw+to:robertson,nsw+to:sutton+forest,nsw+to:mortdale,nsw&sll=-25.335448,135.745076&sspn=47.59105,90.263672&ie=UTF8&ll=-34.26397,150.68321&spn=0.6531,0.86744&output=embed"></iframe><br /><small><a href="http://maps.google.com.au/maps?f=q&source=embed&hl=en&geocode=&q=from:mortdale,nsw+to:robertson,nsw+to:sutton+forest,nsw+to:mortdale,nsw&sll=-25.335448,135.745076&sspn=47.59105,90.263672&ie=UTF8&ll=-34.26397,150.68321&spn=0.6531,0.86744" style="color:#0000FF;text-align:left">View Larger Map</a></small>
<p>Later, on the way to Newtown for dinner and bookshops, the K1200GT's odometer ticked over to 40,000km. It has been fun, but now I need to organise another service. Thankfully I am told that this one shouldn't be quite as expensive as the services at 20k and 30k...</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com1tag:blogger.com,1999:blog-4023878807110224913.post-76925049439490567932010-02-13T14:27:00.001-08:002010-02-13T14:28:11.797-08:00Water in Lake George!<div style="text-align: left; padding: 3px;"><a href="http://www.flickr.com/photos/indigoid/4354789896/" title="photo sharing"><img src="http://farm5.static.flickr.com/4043/4354789896_b838ba326d.jpg" style="border: solid 2px #000000;" alt="" /></a><br /><span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/indigoid/4354789896/">Lake George with water in it!</a>, originally uploaded by <a href="http://www.flickr.com/people/indigoid/">indigoid</a>.</span></div>
<p>Yesterday evening a friend and I drove back from Sydney to Canberra in his Isuzu County. While he was driving around Lake George I snapped a couple of pics and some video of the visible standing water. Google hints that <a href="http://www.smh.com.au/articles/2002/11/29/1038386313869.html">this is the first time since 2001</a> that Lake George has had water in it.</p>
<p><a href="http://www.bom.gov.au/products/IDN60801/IDN60801.94926.shtml">The Bureau of Meteorology</a> says Canberra has had about 56mm rain in the last 72 hours. Hopefully a change for the better. Our passionfruit plants noticed and have started fruiting. Yay!</p>
<p>One thing's for sure --- I sure wouldn't want to be one of those sheep on Lake George right now!</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com1tag:blogger.com,1999:blog-4023878807110224913.post-57272916058933311272010-02-02T02:00:00.001-08:002010-02-02T02:01:01.297-08:00Big props for BMW Roadside Assistance<div style="text-align: left; padding: 3px;"><a href="http://www.flickr.com/photos/indigoid/4325000600/" title="photo sharing"><img src="http://farm5.static.flickr.com/4007/4325000600_819e0a88a7.jpg" style="border: solid 2px #000000;" alt="" /></a><br /><span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/indigoid/4325000600/">Warning!</a>, originally uploaded by <a href="http://www.flickr.com/people/indigoid/">indigoid</a>.</span></div>
<p>After yesterday's puncture I called BMW Roadside Assistance to see if I could get the bike and I transported to Procycles today for new tyres. They organised it and early today I got a call from a transport company saying they'd picking us up at 1100-1130. Sure enough, they turned up on time and delivered us to Procycles. This was a thoroughly satisfactory and painless experience. Much better than I've had in the past with other roadside assistance services.</p>
<p>Hopefully the new tyres will last as long as the old ones. Odometer when I picked up the bike with new tyres fitted was 36465 km. Hopefully the next set will be on the far side of 60000 km!</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0tag:blogger.com,1999:blog-4023878807110224913.post-7513271589645531142010-02-01T00:22:00.001-08:002010-02-01T00:23:55.654-08:00My first motorcycle tyre puncture<div style="text-align: left; padding: 3px;"><a href="http://www.flickr.com/photos/indigoid/4321846446/" title="photo sharing"><img src="http://farm5.static.flickr.com/4015/4321846446_a37323945d.jpg" style="border: solid 2px #000000;" alt="" /></a><br /><span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/indigoid/4321846446/">K1200GT rear puncture</a>, originally uploaded by <a href="http://www.flickr.com/people/indigoid/">indigoid</a>.</span></div>
<p>Today I booked the K1200GT in for two new tyres at ProCycles in St. Peters. Michelin Pilot Road2 again. The current set have lasted about 26000 kilometres. I am pretty happy with them.</p>
<p>On the way home from work this evening I had to weave between a few bits of glass and other debris on the road, especially in the tunnel that goes under the runway at Sydney Airport. Clearly I didn't miss <em>everything</em>, as the GT's tyre pressure monitoring told me that I was slowly losing pressure in the rear tyre. I am very glad that the leak was slow enough for me to get home. Normally I run about 2.9 bar in the rear, but by the time I made home to Mortdale the display was reading 2.3 bar.</p>
<p>I cannot overstate just how useful the pressure monitoring is. Without it, despite best intentions, I probably wouldn't have noticed the puncture at all until tomorrow morning or until the bike really started handling badly. By that time there could have been damage to the wheel as well as the tyre, and repairs would be far more expensive. Instead, I was able to keep an eye on the pressure and feel confident that I could ride safely home. The system gives you far more than just relief from wielding a tyre pressure gauge. <em>Highly</em> recommended.</p>Anonymoushttp://www.blogger.com/profile/13767305461631761203noreply@blogger.com0