How to program a new Toyota transponder key

In need of an extra key for your Toyota? Avoid the dealer, they charge an arm and a leg for a simple procedure you can do yourself for free. Searching the web turned up a couple of techniques, but the one that worked for me was found in a youtube comment by user Nazareth434.

My car is a Toyota Matrix 2005 but apparently this procedure is valid for several Toyota models and years. According to the diy-time tutorial, it should work for the following models

  • 2004-2006 Camry
  • 2004-2010 Sienna
  • 2004-2008 Solara
  • 2003-2009 4Runner
  • 2004-2010 Highlander
  • 2005-2010 Scion TC
  • 2008-2009 FJ Cruiser
  • 2003-2009 Rav4
  • 2007-2008 Yaris
  • 2005 Matrix
  • 2005 Corolla
  • 2010 Hilux
  • 2005 Kluger
  • 2010 Hiace
  • 2003-2007 Toyota Sequoia (special instructions)

Diy-time also has procedures for other Toyota models. If nothing including this procedure has worked for you, don’t despair, at least your copy can open doors. Attach the key to a concealed spot under you car and save it for the “oops I’ve locked myself out” type of situation.

Procedure

First, you need a blank transponder key for your model and year. You can get one for 10$ or so through eBay or Amazon. Then, have the key cut by your local hardware store and make sure it fits your ignition lock: you should be able to turn it all the way to the start position and hear the starter going without the engine turning on. With the master key (the black key, not the valet key, which is grey) and the copy in hand, install yourself in the driver’s seat and follow the procedure carefully. It took me about 30 minutes and many tries to get the steps right as there is timing involved. Persevere and and it should work.

  1. Insert the MASTER key in the ignition 5 times, leaving it IN the ignition on the 5th time. Do not turn the key. Don’t rush that step, do it slowly.
  2. Open and close the driver’s door 6 times, leaving the door closed on the 6th time. (the two first steps have to be completed within 30 seconds)
  3. Remove the master key from the ignition. The security light should now be solid red to indicate programming mode. If it’s not, repeat from the beginning.
  4. Insert the new key in the ignition but don’t turn it. Do that step quickly as the computer only stays in this mode for a couple of seconds.
  5. The security light will resume blinking. After 60 seconds (maybe more, be patient), the light will stop blinking and turn off.
  6. Remove the new key, insert the master and turn the engine on and then off.
  7. Done! Test your new key. When you insert it, the security light should stop blinking and the car should start.

The theory

Its wrongly called programming a key but in fact, no key gets programmed by itself, its the car that gets programmed. Keys have an RFID emitter in them which outputs a unique identifier when prompted by the car’s anti-theft device’s reader upon insertion in the ignition. If that identifier is not in the car’s computer valid key identifier list, the car will not start.

What the procedure above does is putting the car’s anti-theft system in programming mode and then telling it that it should include the new key’s id in its list of permitted keys. This is done by doing a set of special steps with the master key in. If you possess the master key, chances are you are the master, but should you loose all you keys, there will be no way of starting the car again other than replacing the anti-theft computer; something the dealer will charge a lot for.

Fixing AMD (ati) radeon display issues on Fedora

Note (09/01/17): also worked on a recent upgrade from 23 to 25.

I had put off system upgrades for so long that I found myself having to go from Fedora 20 to 23. It took a while but everything was going smoothly until I hit Fedora 23 on. There, after the mandatory reboot, hooking up my secondary monitor would freeze the display and screen repainting on some programs (like Eclipse) had become problematically slow and CPU demanding. This being Linux, I scoured the web on a quest to find some clues on what was not configured correctly but nothing came up. I’m running an AMD A6-3420M APU and while AMD provides driver for that chip, they are according to reports very finicky and a pile of trouble to get running.

I resorted to simply downgrading the driver. It was working correctly in the past, so I could see no obvious reason an older version would not do it this time.

First find the version of the driver currently installed:

dnf info xorg-x11-drv-ati

Which should spit out something along the lines of:

Installed Packages
Name        : xorg-x11-drv-ati
Arch        : i686
Epoch       : 0
Version     : 7.6.0
Release     : 0.4.20150729git5510cd6.fc23
Size        : 151 k
Repo        : fedora
Summary     : Xorg X11 ati video driver
URL         : http://www.x.org
License     : MIT
Description : X.Org X11 ati video driver.

So the faulty driver is version 7.6.0. Now, run:

sudo dnf --showduplicates --allowerasing --releasever=24 downgrade xorg-x11-drv-ati

Here, we’re asking dnf to go look in a previous release of Fedora for an earlier version of the driver. If the problems you are experiencing appeared with a recent update, you could avoid the –releasever argument altogether to just revert back to the previous version.

If the downgrade does not work, you rerun the command to roll back the driver even further in the past, but if after a couple times you haven’t had success, the issue probably lies with another package so run a dnf update to and take your investigation elsewhere, maybe the kernel, wayland, X, the window composer or gnome-shell.

When you update your system in the future, you’ll have to run:

sudo dnf --exclude=xorg-x11-drv-ati update

Otherwise, dnf will reinstall the broken later version of the package. This command will also give you packages with broken dependencies. That’s normal, those are packages that share dependencies with the one you have downgraded and for all I know could actually have been the ones causing you trouble. Just let them be.

Make sure you check back from time to time if another version of the offending package has been released by issuing a simple dnf update and checking the version now available.

How to download a CBC radio show episode no longer available as a podcast

Sadly, CBC (Canadian Broadcasting Corporation) has a policy to keep podcasts available for download only 3 months for daily shows and 6 months for weekly shows with some of them being available for an even shorter time. Luckily, most shows can still be streamed from the CBC radio website using a flash/web player but are still no longer available for direct download. That’s convenient if you’re in front of your computer (which is seldom the case when listening to radio), but not that practical if you want to take an old favorite on a run.

Most of what we do on our computers is just data copying and playback, always in that order. So if it’s playing in your computer speakers, its coming from a stream, and if it’s coming from a stream, it can be copied as file. There are tons of software and websites that will let you do just that, but most of them are geared towards more popular streaming sites of the likes of YouTube and such so I had to resort to another technique for the CBC’s website. The non-trivial part here is to find the URL from which the data is coming from but modern web browsers and their built-in debugging facility have made this an easy task. Once you have the URL, you’re free to download the wanted file at will. This process assumes you’re using Chrome, but it works just as well with Firefox.

So let’s say I want to download this past episode of the show Ideas. There is a player on the page, but no download link.

  1. Bring up the page in Chrome but don’t start streaming yet.
  2. Left-click anywhere on the page and click on “Inspect element“, this will bring up the Chrome debugger.
  3. Within the debugger, switch over to the “Network” tab.
  4. On the episode’s page, start steaming the episode by clicking the play button, you’ll see a bunch of things happening in the debugger window.
  5. Click on the “type” column to sort the data elements by type and find the audio/mpeg (or media) one, that’s the file you’re streaming (see screenshot below). Mine’s name is ideas_20130307_53465_uploaded.mp3.
  6. Left-click on the name and select “Copy link address” or “Open in new tab” and that’s it, from there you can download the episode as a file. The link for my episode is http://thumbnails.cbc.ca/maven_legacy/thumbnails/14/881/ideas_20130307_53465_uploaded.mp3. When opening up the link in your browser, it might bring up its own player but if you click around, you’ll find an option to download the file instead of playing it.
Chrome debugger view with the stream data row highlighted. Left-clicking on the row will bring up a link to the stream itself and allow its downloading.
Chrome debugger view with the stream data row highlighted. Left-clicking on the row will bring up a link to the stream itself and allow its downloading.

Nuts for coconuts, the amazing ways of consuming this exotic fruit

The coconut at the stage we are most familiar with

We know coconuts as the principal ingredient of a piña colada, we know coconuts as the tasty filling of a bounty chocolate bar, we know coconuts as the crucial part of a good curry, we know coconuts for their awesome taste but otherwise, we remain pretty ignorant about its many uses and life cycle.

Allow me to enlighten you with my recent experience with this incredible fruit and the knowledge I gathered from the locals in the Carribean. While not scientifical, I sincerely hope you will remember this little piece should you ever become stranded on a lonely tropical island. Otherwise, just take it as a little how-to guide for the next time you find yourself around a lot of coconuts.

An opened coconut

Coconuts as their name implies, are the nuts (or fruit (technically a drupe)) of the coconut palm tree. They grow everywhere around the carribean coast of Costa Rica and as far as I know, their extend is very large and in some cases, their productivity can turn them into a nuisance. There is no season for these trees, they just constantly produce all throughout the year, with every batch taking a couple months to mature. Coconuts are large fruits and do not biodegrade very easily. So much so that locals have to get rid of them (and their leaves) using bonfires.

A yellow coconut palm

Coco palms come into a few varieties which are mainly differentiated by the colours of their nuts: yellow, green, or something in between. If you are after pipa, you will prefer the green variety for its sweetness but when they age, the differences in flavor dissapear and the nuts all turn the same brown.

The pipa

A green coconut palm, preferred for pipa

There is a couple of vendors yelling “pipa fria” around you but cannot quite figure out what they are selling? Its coconut water, or “pipa”. A young coconut before it becomes ripe has a lot of water in it, easily 150 ml I would say. This water is sweet, very rich in minerals and feels very healthy to drink, if you can get past the weird taste (it’s somewhat of an acquired thing). Mike, another volunteer at the association has aptly called pipa “the gatorade of the jungle”: some local guides will not bring any water bottles on patrols, they will just reach up for a pipa or two.

A yellow “coco tierno” alongside a green pipa

The pipa is probably the stage of the coconut that is easiest to consume. Vendors in the street will slice the top off, put in a straw an refrigerate pipas but in nature, you just grab, smash and drink. Grab a pipa from the palm, smash it one or two times against the trunk until the nut cracks and drink the dripping water. It’s a bit messy but even though it is sweet, pipa will not get your hands all sticky.

The older pipa (or half-coconut)

Size comparison of a more mature coconut to a young pipa (which I am holding)

As they age and ripe, pipas grow bigger, thicker, and get harder to crack open. Should you succeed tough, you get rewarded with sweeter coconut water and a gelatinous substance called “coco tierno” (tender coco) that covers the inside surface. Coco water serves as a suspension for the endosperm of the nut and as it matures, will form this deposit. This substance is what is later going to become the white hard flesh of a ripe coconut and while the taste is somewhat different, it definitely hints towards that flavor.

The white gelatinous flesh can be scooped using a slice from the skin, notice the presence of shell

This tasty flesh can be scooped using a broken piece from the shell or a slice from the skin of the husk but in order to access it the nut has to be split in half. Without the proper tools (a machete), this is quite a challenge and requires a lot of smashing around and prying. At this stage, the very hard shell which we are used to crack with a hammer has started forming.

The nut (as we know it)

The tool of choice when working with coconuts: the machete

Now we come back into known territory, the ripe and mature nut is what we are used to finding in northern hemisphere supermarkets. What we are not familiar with however is how incredibly hard it is to get to the nut itself. Covered by a dry husk made of a thick skin and very fibrous material, this one it truly a “tough nut to crack”. Once open, little coconut water remains, most of it has coalesced into the very flavorful flesh we are all so fond of.

A ripe coconut with the husk removed

When on the ground and in the presence of humidity, the nut will obviously start to germinate. From one end of the nut, leaves will burgeon and from that same end a root system will emerge, all feeding on what is inside the nut and turning the flesh and water into a coconut sponge. Very rich, this sponge when be pressed will ooze oil (good for cooking) or can simply be eaten. Be careful, common wisdom has that eating too much of this will give you diarrhea.

A germinating coconut

These nuts are nature’s own small ships, known to have traveled by sea for thousand kilometers to land on a small remote island and populate it with this awesome tree. I did not get into the great many uses of the husk (textile), shell (jewelry, combustible) and the tree (lumber) itself, I did not cover the great many culinary, medicinal and industrial applications of this plant as well. I admit to be

Coconut sponge

wholly ignorant in this matter: the list of use cases for the coconut palm and its fruits seems virtually endless, I just know how to eat them raw.

Now we need to figure out how to grow these in Canada.

Partitioning an Ipod to FAT32 and ext3

I recently inherited my sister’s “defective” (but fixed for 5$) 120GB Classic Ipod and managed to partition it the way I wanted. It was not a trivial process so I tought I’d share my experience with the web so others can benefit from it.

My music library is far from being 120GB so even if I feed the Ipod all my tunes, I’d still have a lot of free space on it. Granted, you can mount the Ipod as a mass storage device and stuff the rest with anything, but here’s the catch: Ipods will only format to FAT32 or HFS+ file systems if you use iTunes. As a consequence, if you pick HFS+, you will not be able to use them on windows and some *nix (if they lack the HFS+ support module) and if you choose FAT32, backup solutions such as backtintime will not work (they need a journaling file system).

So I took to partitioning my Ipod with two different partition using a different file system for each, FAT32 and EXT3. I tough it would be a simple task, but turns out that it wasn’t. Just formatting the Ipod and letting gtkpod rebuild it did not cut it; the device would stutter, only play the first few seconds of each track and give off artifacts while displaying the CD covers. And when plugged in iTunes, the software would report the device as corrupted and offer me to reset it. I thought that gtkpod must be missing on something so I should use iTunes instead yo rebuild it, but iTunes would still ask me to reset my iPod. Here is what worked after a fair amount of tinkering:

  1. Reset the iPod with iTunes (on a different computer since this tutorial assumes you are using a *nix).
  2. Plug it on Linux and run the following command on the user partition. My Ipod is a 6th generation classic, there is no partition for the firmware, it sits somewhere on the MCU flash, but it appears that older Ipod use a firmware partition so leave it alone. Paying attention to that particularity, here is the commands you need to run:
    1. Unmount the plugged int Ipod with umount  /dev/sdXY Where X is the device letter of your Ipod and Y is the partition number.
    2. dd if=/dev/sdXY of=ipod.bk bs=512M Where X is the user partition of you Ipod and Y is the partition number. This will effectively copy 512MB of raw bytes from you Ipod partition and save it to the ipod.bk file.
  3. Next, take your Ipod and format it the way you want using fdisk. If you have a firmware partition, do not destroy it! Keep the following points in mind:
    1. Use a Master Boot Record (MBR)
    2. All partitions should be primary
  4. Finally: dd of=/dev/sdXY if=ipod.bk bs=512M Where X is the user partition of you Ipod and Y is the partition number. This is going to copy back that 512MB file we extracted earlier from the Ipod, setting that partition the way it was before the repartitioning.

Voilà! Plug your Ipod in, upload music with you favorite app and do backups with your file system of choice. Mine is happily working with that setup: Ipod stuff on FAT32 and backintime on EXT3.

The quirk I got with this technique was that both iTunes and the Ipod report the full size of the internal hard drive as being available for music while in reality its not; it looks like the firmware keeps a record of the empty space withing the files of the user partition (why it is not computing it is anyone’s guess). You should probably be careful not to fill it up to a point where the two partitions would overlap (although that should not happen if the firmware is paying attention but then again, not tested).

Enjoy!