Hi All,
in the last couple of days I have implemented Software Loading for the nanoBTS. Use this at your own risk but it is working here(tm).
Software Load is implemented as of the GSM 12.21 with some quirks and extra messages compared to the BS11.
- BS11 got the length of the "length" wrong and it should have been a short. ipaccess got this right so I needed to change that part - For the nanoBTS in the SW Load Init and Load End message one needs to add the SW_DESCR IE but without a length. 12.21 would probably require the length but this is omitted. The other part is that the file id must be set to "id\0" and the version to "version\ 0" or at least was set like this in the example trace I had. - Strings must be written with the '\0' in it. - After the Software Load End ACK one needs to send a special SET NVATTR to set the software as default. The message must contain the ID and Version of two firmware parts. I'm not sure which funtional part they relate to but they have the "more more magic" ids of 0x1000 and 0x2001.
I have changed ipaccess-config to exit after the software load, or setting the primary OML IP by handling the ACK and carrying a state. One can also chain "-r" and the above two so the primary action will be executed first and then the reset will be issue and with a reset ack/nack the app will exit.
With doing the above it becomes aware that we should change ipaccess-config a lot, all the options you could enable should generate an operation and we should put these into a queue and then execute them one after another and exit once all of them are done but this will be a bigger project as we need some more cooperation with abis_nm.c. Is anyone volunteering to fix the structure of this small application helper?
regards holger
- For the nanoBTS in the SW Load Init and Load End message one needs to add the SW_DESCR IE but without a length. 12.21 would probably require the length but this is omitted. The other part is that the file id must be set to "id\0" and the version to "version\ 0" or
at least was set like this in the example trace I had. - Strings must be written with the '\0' in it.
- Actually the SW_DESCR IE doesn't have a length. It's defined in 12.21 - 9.4.62 as having a File ID IE followed by a File Version IE and since both have length, they don't use a length for SW_DESCR. - And for the \0 things, I thing the file id and file version can be just any binary blob and they just choose to use zero terminated strings ...
So they just match 12.21 closely AFAICS :)
The data sent currently in sw activate packets is wrong btw ... there is a patch in my pending branch fixing that but apparently needs to be validated against a BS-11 to be sure it still works with it :p
Sylvain
On Wednesday 30 December 2009 10:59:05 Sylvain Munaut wrote:
- For the nanoBTS in the SW Load Init and Load End message one
needs to add the SW_DESCR IE but without a length. 12.21 would probably require the length but this is omitted. The other part is that the file id must be set to "id\0" and the version to "version\ 0" or at least was set like this in the example trace I had. - Strings must be written with the '\0' in it.
- Actually the SW_DESCR IE doesn't have a length. It's defined in 12.21 -
9.4.62 as having a File ID IE followed by a File Version IE and since both have length, they don't use a length for SW_DESCR.
Argh, I was looking at 9.4.61 and saw a length (off by one)... okay this is one more thing we can fix in the wireshark OML plugin now.
- And for the \0 things, I thing the file id and file version can be just
any binary blob and they just choose to use zero terminated strings ...
Yes, maybe the nanoBTS will take any id and version... in the trace they were using the "id\0" and "version\0" string though.
So they just match 12.21 closely AFAICS :)
agreed