Starting TR-069

I am starting the TR-069 ACS project, at last.

We were somewhat thwarted by the fact we could not get the damn router to even try and connect. Turns out it won't follow a CNAME in the URL you give it - expects an A record. I have yet to see if an AAAA works. This is the main thing that led to us finally changing the domains around yesterday. I suspect we still have some mopping up on that this morning.

However, I have got as far as seeing that it is posting a SOAP encapsulated chunk of XML which looks very much like the specification says it should. I can also "poke" it using a specified port to convince it to do a "call back" to the ACS.

So, the plan at present is a single C code tool that runs as index.cgi under apache. I may add a server mode later that does listen and HTTP header stuff, but no need for now. Seems it will be fine under apache.

I will use (and hence publish) my XML library (a simple wrapper to parse, process and generate XML, using expat) and my SQL library (a simple wrapper around mysql, or in theory other SQL back ends). I use these in most of my tools.

My main aim is to handle the Technicolor routers and probably SNOM phones too. We may make FireBrick's work as TR-069 clients too. There are loads of other things you can do with TR-069 it seems, but I suspect most people do not need more than the basic fire transfer stuff.

Seems the first step is managing the parameters sent from the device. These will go in a database. Then I move on to sending and receiving files, such as config and code updates.

The plan is that the tool will have options allowing you queue a file transfer, which will be stored in the database as a request, and do the necessary poke to the device so the transfer then happens. I'll decide more when I start coding this.

So far zero lines of code, but watch this space.


  1. OK, lots of distractions today but we have got a working TR069 server now. It allows me to collect parameters from Inform message in to a database. It allows me to queue various requests such as setting parameters and sending new config and firmware.

    I have loads of little details still to add, and we are trying to find how we update the isp.def file, if at all possible.

    But so far so good.

    Next stage is more integration in to our management systems so that users can edit a config on a web page and have it sent to their router.

    All good fun.

  2. Ha, we can't change the isp.def file. That is a tad annoying.

  3. "basic fire transfer stuff" ... is that when you buy a Technicolor, TR-069 it, and it magically turns into a FireBrick? *grin*

    No? Shame...

  4. In regards to your TR-069, how did you achieve bulk uploading the ACS details to multiple routers or did you do this 1 by 1?

    1. We ordered routers with the server pre-set to us.


Comments are moderated purely to filter out obvious spam, but it means they may not show immediately.


There are lots of ways to debug stuff, but at the end of the day it is all a bit of a detective story. Looking for clues, testing an hypothe...