A simple ACS/tr069 server to configure femto cells.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Alexander Couzens ef4901c1fd initial 1 year ago
cache initial 1 year ago
config initial 1 year ago
data initial 1 year ago
example_xml initial 1 year ago
templates initial 1 year ago
.gitignore initial 1 year ago
Pipfile initial 1 year ago
Pipfile.lock initial 1 year ago
README.md initial 1 year ago
app.py initial 1 year ago
xmlutils.py initial 1 year ago


femto-acs for femtocells

This is a hack to get ip.access nano3g femtocells configured without using a huge tr069/ACS server like (geniacs, ...). This simplified version only reacts on Inform and tries to set values from the configuration file without checking the state of the femto cell. It further does not create or delete objects if they don't exist. Neither does it check if the values in the ini file are valid. E.g. by getting both values and type from the device itself.



Ensure python3 with pipenv is installed

apt-get install python3 pipenv

pipenv install



Please change the SECRET_KEY by generating your own. The SECRET_KEY is used to sign cookies.


The main configuration file for the femtocells. The Common section is used as default values which can be overriden by a specific femtocell configuration. To override values for a specific femtocell create a section with the serialnumber including leading zeros as shown for femtocell 0000123456.

IMPORTANT ensure the Device.ManagementServer.URL=|xsd:string matches this server including the /acs.

After changing values in the femtocells.ini the femto cell can be either rebooted or wait until the femto cell is informing us again (see periodic inform / tr069).


From within the repository call:

pipenv install
pipenv shell
gunicorn -k eventlet --keep-alive 600 --bind app:app

gunicorn is used to allow keep-alive connections.


femto cell stops reacting on ACS data

Ensure the xml files contain an extra newline (ascii 0xa) on the end of the request.

Bugs / Limitations

  • It doesn't use any external database (mysql) or cache system (redis) to reduce the amount of external dependencies and simplify the setup.


Thanks to: