- April 2026 (5)
- March 2026 (3)
- February 2026 (4)
- January 2026 (4)
- December 2025 (1)
- November 2025 (3)
- October 2025 (9)
- September 2025 (3)
- August 2025 (5)
- July 2025 (1)
- June 2025 (2)
- May 2025 (3)
- April 2025 (2)
- March 2025 (7)
- February 2025 (10)
- January 2025 (6)
- December 2024 (7)
- September 2024 (1)
- August 2024 (2)
- July 2024 (2)
- May 2024 (2)
- April 2024 (2)
- February 2024 (2)
- April 2023 (1)
- March 2023 (2)
- September 2022 (1)
- February 2022 (1)
- November 2021 (1)
- March 2021 (1)
- February 2021 (2)
- August 2019 (1)
- November 2018 (1)
- May 2017 (1)
- December 2016 (1)
- April 2016 (1)
- August 2015 (1)
- December 2014 (1)
- August 2014 (1)
- March 2014 (1)
- December 2013 (1)
- October 2013 (3)
- September 2013 (4)
- August 2013 (2)
- July 2013 (1)
- June 2013 (1)
- February 2013 (1)
- October 2012 (1)
- June 2012 (1)
- May 2012 (1)
- April 2012 (1)
- February 2012 (1)
- October 2011 (1)
- June 2011 (1)
- May 2011 (1)
- April 2011 (1)
- March 2011 (1)
- February 2011 (1)
- January 2011 (1)
- December 2010 (3)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (1)
- July 2010 (1)
- May 2010 (3)
- April 2010 (1)
- March 2010 (2)
- February 2010 (3)
- January 2010 (4)
- December 2009 (2)
- November 2009 (5)
- October 2009 (2)
- September 2009 (2)
- August 2009 (3)
- July 2009 (1)
- May 2009 (1)
- April 2009 (1)
- March 2009 (5)
- February 2009 (5)
- January 2009 (5)
- December 2008 (3)
- November 2008 (7)
- October 2008 (4)
- September 2008 (2)
- August 2008 (1)
- July 2008 (1)
- June 2008 (1)
- May 2008 (1)
- April 2008 (1)
- January 2008 (4)
- December 2007 (3)
- March 2007 (3)
- February 2007 (1)
- January 2007 (2)
- December 2006 (4)
- November 2006 (18)
- AI (78)
- TIL deep dives (72)
- Python (70)
- LLM from scratch (43)
- Resolver One (34)
- Blogkeeping (18)
- PythonAnywhere (17)
- Linux (16)
- Startups (15)
- NSLU2 offsite backup project (13)
- TIL (13)
- Hugging Face (12)
- Funny (11)
- Finance (10)
- Fine-tuning LLMs (10)
- Musings (10)
- C (9)
- Gadgets (8)
- Personal (8)
- Robotics (8)
- Website design (8)
- 3D (5)
- Rants (5)
- Cryptography (4)
- JavaScript (4)
- Music (4)
- Oddities (4)
- Quick links (4)
- Talks (4)
- Dirigible (3)
- Eee (3)
- Memes (3)
- Politics (3)
- Django (2)
- GPU Computing (2)
- LaTeX (2)
- MathML (2)
- OLPC XO (2)
- Retro Language Models (2)
- Space (2)
- VoIP (2)
- Copyright (1)
- Golang (1)
- Microprojects (1)
- Raspberry Pi (1)
- Software development tools (1)
- Agile Abstractions
- Astral Codex Ten
- :: (Bloggable a) => a -> IO ()
- David Friedman's Substack
- Econ & Energy
- Entrepreneurial Geekiness
- For some value of "Magic"
- Hackaday
- kaleidic.ai newsletter
- Knowing.NET
- Language Log
- Millennium Hand
- ntoll.org
- Obey the Testing Goat!
- PK
- PythonAnywhere News
- Simon Willison's Weblog
- Societive
- Software Deviser
- Some opinions, held with varying degrees of certainty
- tartley.com
New project: VoIP
We need to sort out our phone system at Resolver, which has given me the excuse not only to wire up the office for gigabit ethernet (am I alone in thinking that self-adhesive trunking is an incredibly underrated invention?) but also to start playing with VoIP. I suspect that for the company I will wind up outsourcing everything, getting some kind of managed solution with an external POTS (normal phone) number that routes through to softphones on our desktop machines. I'll blog about anything interesting I find in that line.
With my home phone I can mess around a little more. In the excellent VoIP Hacks, I read about the Sipura SPA-3000, a clever device that connects to your phone socket and routes the signal onto your ethernet -- so that you can route incoming calls to a SIP (that is, VoIP) phone on your network, and -- if you are so inclined -- route your VoIP calls on the network out to the regular phone system. This is a great device because it allows you to start playing with VoIP at a minimal cost -- after all, if you want to do anything interesting, you'll need to mix your normal phone system in with your experiments, and phone cards for Asterisk servers can be costly and a pain to install.
Anyhow, after slightly more hunting around than you would hope, trying to find out where to get an SPA-3000 in the UK, I discovered that Sipura was acquired last year by Cisco -- their products are now sold under the Linksys brand (which, to be fair, is one I have a soft spot for). It's kind of odd that this fact isn't posted on the front page of the Sipura site, but there you are -- it looks like the site has been left unupdated for quite some time.
Once you know about the acquisition, it becomes easier to find the products, though it is still surprisingly difficult -- dabs.com, my favourite supplier, have nothing of interest, and none of the other companies I normally use stocked anything. However, BroadbandBuyer.co.uk have the SPA-3102, which is the successor to the SPA-3000. Mine arrived the other day.
The first step was to set up the device so that I was simply to be able to dial out and receive calls over my normal telephone line, with the phone and the line both connected to the device -- that is, to simply have it pass signals through in both directions. This should be trivial -- it's the default configuration, and should work even if the phone is switched off -- but, at least in the UK, it's not. The device comes with RJ-11 sockets (US telephone standard, a bit like the ethernet RJ-45 sockets but smaller) for both the FXO and the FXS ports, and an RJ-11 to RJ-11 cable. Like most modern phones sold in the UK, my normal telephone has an RJ-11 socket in the unit, into which is plugged an RJ-11 to BT socket cable (BT being the British standard, after British Telecom -- the plug looks a bit like a wide ethernet plug, with the "latch" to the side rather than on top). I initially tried connecting the phone to the unit by using the supplied RJ-11 cable, but got nothing. I then switched back to the old BT cable, but put an adaptor with a ring capacitor in between; this worked, and I got a (rather odd) dial tone from the device, and was able to use its voice prompts to find out what IP address it thought it had (192.168.0.1, no wonder my router was unhappy) and to change it to something sensible. So, lesson one -- if you want to plug a phone into the SPA-3102, you need to use the cable you would use to plug it into the wall, with a ring capacitor.
I then plugged the device into the telephone socket, using a different RJ-11 to BT cable. This did not work either; the dial tone on the phone did not change from the device's own tone to the BT one. A quick google, and I found this forum post; I needed a modem cable "with the wires swapped" rather than a straight-though cable. (My mental model for this is that it's kind of like an ethernet crossover cable.) A quick trip to Maplin, and voila -- the device worked in passthrough mode just fine, and I can start thinking about how to do something more useful with it!
Some pondering... initially I was thinking that it was because one has to mess around like this that VoIP has yet to hit prime time in this country... but then, I heard the laughter of thousands of aging british road warrior businessmen in my head, people who spent years on trips to the US, messing around with their modem cables -- back in the days when you could stay in a serious hotel that didn't have some kind of WiFi, or at least ethernet. "Of course you need a ring capacitor", they cry. "Isn't it obvious?"