How to convert a Cisco 7961 from CSSP to SIP

In this article I will provide you with a simple way to update the firmware on the Cisco 79×1 series of IP phones. I made this article because a lot of tutorials provide you with wrong information, which could even brick a phone. And most tutorials use ptftp32, which I could not get working. This article is compiled from numerous other articles (like: this one and this one).


  • Working Cisco 79×1 phone, with a reasonably high CSSP firmare version. (I tried this with version 8.5)
  • The latest SIP firmware files from the Cisco downloads page. This device still receives regular updates, but you have to create a free account in order to download these files.
  • Network switch with PoE (Cisco 100 mbit ones are very affordable), or without PoE but then you’ll need an AC adapter
  • Raspberry Pi (any version)
  • Secondary machine to configure the Pi (like a notebook with an ethernet port)

Step 1:

Download and install the latest version of Raspbian to the micro SD card. Add an empty file to the boot partition called ‘ssh’, with no extention. This will enable you to connect to the Pi using SSH, without using a monitor, keyboard and mouse.

Plug the Pi into your normal network, and find out what IP it has been assigned. Using this IP, SSH into the Pi using your favorite method (Putty/directly from terminal). Create a folder using mkdir called ‘cisco’. Execute chmod 777 ciscoto access everything. Connect to the Pi over sFTP using a program like FileZilla, and place the firmware from the cisco website into the ‘cisco’ folder. This is where we’ll point the root directory of the TFTP server later. Do chmod -R 777 cisco again.

Step 2:

Install dnsmasq using the following command: sudo apt-get install dnsmasq. Dont forget to run sudo apt-get update first!

Set the ip to static by editing the DHCP config file on the Pi, choose Disconnect the Pi from your normal network and turn the Pi off.

Step 3:

In order for this method to work, you’ll need to create a separate network with just 3 devices: the network switch, the IP phone and your secondary machine. You can’t run this on a network that already has a DHCP server, as we are creating our own.

Setup the switch with a static IP of (I can’t go in to detail how to do this, but usually you’ll need to set your machine to a static IP and connect to the management interface of your switch)

Step 4:

Configure your secondary machine to use a static IP of (you might have already done this in the previous step to reach the management interface of your switch). SSH into your Pi using the new network we just created. We are going to create a custom configuration file for dnsmasq. Execute the following command: sudo nano /etc/dnsmasq.d/custom.dns

In the texteditor that just opened, type the following:

dhcprange,, 24h
tftp enable
tfpt rootdirectory /home/pi/cisco

Step 5:

Now we are going to connect the phone to our new network, and immeadiatly update the firmware. Hold down the hastag (#) button and plug the phone in to the switch (or power it on if using a adaptor). Keep holding down the hashtag button until the line select buttons start to turn on and off consecetivly. Then enter the following code into the keypad: ‘123456789*0#’. The phone will now boot into the firmware update mode, and will look for our combined DHCP/TFTP server. The phone will show you the progress, and once it downloaded all the files from the TFTP server, it’ll reboot 2 times. After that it should show the normal screen with ‘Not provisioned’ in the bottom left corner. This means the update worked!

How to use a Weller DSX80 with a WSD81 soldering station

Recently Рwhile browsing eBay РI came across a Weller DSX80 desoldering iron.  Below I will describe extensively how to use the DSX-80 without buying the expensive soldering station that you are supposed to use it with.

The WDD-81V

The WDD-81V

This German beauty uses a heated tip with a hole in it through which a vacuum is pulled by pushing a button. This allows you to desolder through hole components effortless. It can be found on eBay for around 80 euros.

Frustratingly the accompanying soldering station¬† (The Weller WDD-81V) cannot be found cheaply online. This station uses a compressed-air inlet, a Venturi effect vacuum generator and a solenoid valve (controlled with the button on the iron) to switch the vacuum. It outputs it’s vacuum through a little connector below the 7 pin connector.

Weller WSD-81

Weller WSD-81

However, the Weller WSD-81 is very abundant on eBay and relatively cheap (about 60 euros). It uses the same 7 pin proprietary Weller connector, thus it can deliver enough power for the DSX-80. If you connect the switch on the iron to a solenoid valve connected in between an external vacuum source, you have a fully working DSX-80, for a fraction of the retail price. Easy, right? That’s what I thought when I had this idea in my mind. It turned out to be quite challenging. Read on below to see what things I decided to use to emulate the WDD-81V, and how I connected everything.

In order to make this work with the WSD-81 we need to figure out these things:

  • What vacuum source
  • How to switch the vacuum on and off
  • How to use the button on the iron
  • How to integrate all this

The vacuum source

Because air compressors can be a bit expensive, large and noisy, I decided to use a vacuum pump. I thought about salvaging the compressor from an old refrigerator, but then I came across the Aoyue 933. It is marketed as a solder fume absorber, but it works just fine as a cheap vacuum pump. It’s cheap price (35 euros) made me choose it over fooling around with a refrigerator compressor. It provides about 0.8 bars of vacuum, which is the same as what the WDD-81V provides.

Aoyue 933

Aoyue 933

But you are free to use any way of generating a vacuum you want (venturi vacuum generator (commonly called ‘ejector’)/ old pumps/…).




A way to switch the vacuum on and off

I used a 12V DC normally closed solenoid valve with 1/4 inch to barbed adapter to connect to hoses. Find one like this on eBay:

Solenoid valve on eBay

Solenoid valve on eBay

A way to use the button on the iron

Below is a picture of how the button is connected in the handle of the DSX-80. I couldn’t find any schematic of the controller board.

The schematic of the handle and the pinout of the 7 pin connector

The schematic of the handle and the pinout of the 7 pin connector

As you can see, pin number 7 is either connected to ground or pulled down through a 44k ohm resistor. There is no way to use this switch directly.

I soldered 2 wires to the pins on the controller board to see what the button does.

The wires soldered to the pins

The wires soldered to the pins

Putting any voltage on pin 7 will offset the ground of the controller board inside the WSD-81, which results in incorrect temperature readings. I measured the voltage at pin 7, with pin 1 as ground. It’s about 5V when not pressed, and 0V when pressed, drawing any current from pin 7 will collapse the voltage. I tried to directly switch a P-channel MOSFET with that voltage but it didn’t work, it drew too much current, which caused the gate source voltage to be too low.

So I needed something that inverts the signal which is presented on pin 7 (because the relay is normally closed), and has a high input impedance, a CMOS inverter IC! I came up with this circuit, using an old school CD4049UBE.

The schematic

The schematic

VIN is sourced from the large input capacitor of the onboard 5v regulator of the WSD-81.

Sourcing VIN

Sourcing VIN

After some testing on the breadboard I made the final circuit on some perfboard, and added some screw connectors:

Finished perfboard circuit

Finished perfboard circuit

The incoming wires are (from bottom to top) the switch signal (pin 7), ground (pin 1) and +16V unregulated (from the onboard regulator). On the left the solenoid valve connection.


I choose to put the solenoid valve and my perfboard circuit inside the vacuum pump. This way I can easily tap into the internal tubing to connect the valve in between. In order to connect the WSD-81 to the vacuum pump, I used some 5 pin DIN connectors I had laying around from an old project to make a sturdy connection. I drilled a hole in the bottom of the pump to mount the solenoid valve, and I hot glued the perfboard to the back of the front panel of the pump.

Below are some pictures of this:

Cosy lab

Normally the lab is this cold harsh place, mostly due to the TL lighting. But today while I was testing my leds for my 4x4x LED cube, I turned the lights down and it looked real cosy with the red lights (on the run)

With the red leds:

leds testing

Normal lighting:


Will be updating soon on my ledcube.

Dell PowerEdge 2950

I recently came across a bargain on Marktplaats (Dutch Craigslist), a Dell PowerEdge 2950 II with 4* 1TB HDDs. This was a no brainer. Buying the disks alone would cost equally as much. Picked it up a few days ago and the server is running VMware ESXi 5.5. I currently have set up FreeNAS as a VM, it’s running SABnzbd, couchpoatato and sickbeard. I’m planning to make some more VMs to run a VPN and do some backups, but I need to upgrade the CPUs and RAM for that. Right now it only has a dual core xeon x5100 @ 1.8ghz and 5GBs of RAM. The CPUs and RAM are dirtcheap on eBay.

Dell PE2950

Arduino Wheater Station

In two weeks the projectweek at my school will start. I was asked to come up with a good assignment for elementary school students, who will soon attend our highschool. The scope of the project had to be technical. The assingment will be: “Make your own Wheater Station”. I went for the Arduino platform, as it does a good job at combining physics and computer science. I will provide all the equipment and a manual, the kids have to build it. Earlier this week I wrote the code, and now I have made the circuit myself. The project consists of a pressure sensor (BMP085) and a combined temperature and humidity sensor (DHT11). The readout will be displayed on a 16*2 character LCD display. I will upload the (dutch) manual and the code soon. Expect an link this later this week.Arduino Wheater station