Multiple firmware update on 2203 and 2202 | docsis.org

You are here

Multiple firmware update on 2203 and 2202

3 posts / 0 new
Last post
Exicon
Multiple firmware update on 2203 and 2202

Hello , I'm kind'a new to this forum :)

So thing is :

I have this two lines in my conf file :

SwUpgradeServer
SwUpgradeFilename

Thing is I have modems EPC 2203,2202 and 3x series , is there a way to multiple update, way that it recognize which modem it is and update it's fw.

Some thing like

SwUpgradeServer x.x.x.x
SwUpgradeFilename "epc 2202.bin"
SwUpgradeFilename "epc 2203.bin"

Do I have to use CMSoftwaretable something like CmSwModel....

Or just adding another MfgCVCData will fix tha thing.

Does anyone have a solution or sample of config file...

Tnx

hinzoo
Must use 0pti0n 43 in dhcp

This is probably the best way to go around this problem.

kwesibrunee
The simple answer is it is

The simple answer is it is really complicated

the docsis way of doing things is
in each config file you have
a CVC and SwUpgradeServer and SwUpgradeFilename specific to that model of modem
to serve multiple models of modems you must have one file for each model with the appropriate SwUpgradeFilename and cvc for that model. You can use option 43 to simplify this

There are also vendor specific ways to do this i.e. for Arris modems you can set

arrisCmDevSwHwModel to the model of arris modem you are trying to upgrade
arrisCmDevSwFilename to the filename for that modem
arrisCmDevSwServer to the tftp server for that modem

This only works for Arris docsis1.x and 2.0 modems for docsis 3.0 modems you have to use the docsis method.

for example in the Config Generator I use I have the following defininitions for Docsis 2.0 modems

SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.3.1 String "TM402G" ;/*arrisCmDevSwHwModel*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.6.1 String "Arris/${arrisD20Version}_NA.MODEL_4_5.${sip}p7b" ;/*arrisCmDevSwFilename*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.5.1 IPAddress $arrisUpgradeIp ;/*arrisCmDevSwServer*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.3.2 String "TM502G" ;/*arrisCmDevSwHwModel*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.6.2 String "Arris/${arrisD20Version}_NA.MODEL_4_5.${sip}p7b" ;/*arrisCmDevSwFilename*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.5.2 IPAddress $arrisUpgradeIp ;/*arrisCmDevSwServer*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.3.4 String "WTM552G" ;/*arrisCmDevSwHwModel*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.6.4 String "Arris/${arrisD20Version}_NA.MODEL_5_WR.${sip}p7b" ;/*arrisCmDevSwFilename*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.5.4 IPAddress $arrisUpgradeIp ;/*arrisCmDevSwServer*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.3.5 String "TM602G" ;/*arrisCmDevSwHwModel*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.6.5 String "Arris/${arrisD20Version}_NA.MODEL_6.${sip}p7b" ;/*arrisCmDevSwFilename*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.5.5 IPAddress $arrisUpgradeIp ;/*arrisCmDevSwServer*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.3.6 String "TM604G" ;/*arrisCmDevSwHwModel*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.6.6 String "Arris/${arrisD20Version}_NA.MODEL_6.${sip}p7b" ;/*arrisCmDevSwFilename*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.5.6 IPAddress $arrisUpgradeIp ;/*arrisCmDevSwServer*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.3.7 String "TM608G" ;/*arrisCmDevSwHwModel*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.6.7 String "Arris/${arrisD20Version}_NA.MODEL_6_ML.${sip}p7b" ;/*arrisCmDevSwFilename*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.5.7 IPAddress $arrisUpgradeIp ;/*arrisCmDevSwServer*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.3.8 String "WTM652G" ;/*arrisCmDevSwHwModel*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.6.8 String "Arris/${arrisD20Version}_NA.MODEL_6_WR.${sip}p7b" ;/*arrisCmDevSwFilename*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.5.8 IPAddress $arrisUpgradeIp ;/*arrisCmDevSwServer*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.3.9 String "TM508A" ;/*arrisCmDevSwHwModel*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.6.9 String "Arris/${arrisD20Version}_NA.MODEL_5_ML.${sip}p7b" ;/*arrisCmDevSwFilename*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.5.9 IPAddress $arrisUpgradeIp ;/*arrisCmDevSwServer*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.3.10 String "TM512A" ;/*arrisCmDevSwHwModel*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.6.10 String "Arris/${arrisD11Version}_NA.MODEL_5_ML.${sip}p7b" ;/*arrisCmDevSwFilename*/
SnmpMibObject 1.3.6.1.4.1.4115.1.3.1.1.4.1.1.5.10 IPAddress $arrisUpgradeIp ;/*arrisCmDevSwServer*/

in dhcpd you can add

# Map option 43 values for Docsis modems
option space vendorOptions;
option vendorOptions.deviceType code 2 = string;
option vendorOptions.serialNumber code 4 = string;
option vendorOptions.hardwareVersion code 5 = string;
option vendorOptions.softwareVersion code 6 = string;
option vendorOptions.bootRomVersion code 7 = string;
option vendorOptions.oui code 8 = string;
option vendorOptions.modelNumber code 9 = string;
option vendorOptions.docsisVendor code 10 = string;
option vendorOptions-pkt code 43 = encapsulate vendorOptions;

then you can use a block similar to this to create the filename based on what model of modem you have
# Setup config File name
if (substring(option vendor-class-identifier,0,6) = "docsis") {
set docsisversion = substring(option vendor-class-identifier,0,9);
} else {
set docsisversion = "docsis1.0";
}
if ((substring(option vendorOptions.docsisVendor, 0 ,5) = "Motor") or (substring(option vendorOptions.docsisVendor, 0 ,5) = "Cisco") or (substring(option vendorOptions.docsisVendor, 0 ,5) = "Arris")) {
set vendorname = substring(option vendorOptions.docsisVendor, 0 ,5);
} else {
set vendorname = "Other";
}
set model = option vendorOptions.modelNumber;
# these models of modems need model specific config files
if (model = "SB5100" or model = "SB5101" or model = "SB5101U" or model ="SB5101NU" or model ="SB5120" or model = "SBG900" or model = "SBG940" or model = "SBG941" or model = "SBG1000" or model ="SB6120" or model = "SB6121" or model ="SB6141" or model = "SBG6580" or model ="TG852G" or model = "TG862G" or model = "DG860A" or model = "DG860P2") {
set modeltype = concat(model, "/");
} else {
set modeltype = "";
}
if (docsisversion = "docsis1.0") {
set docsisfile = concat(docsisversion, "/", speed, ".bin");
} else {
set docsisfile = concat(docsisversion, "/", vendorname, "/", modeltype, speed, ".bin");
}
filename = docsisfile;
option bootfile-name = docsisfile;
#log (info, model);
#log (info, docsisfile);
unset docsisversion;
unset vendorname;
unset model;
unset speed;
unset modeltype;

this sets the bootfile name to:

///.bin if it needs model specific configs and
//.bin if it doesn't

for docsis1.0 modems it sets it to
docsis1.0/.bin

In my company we support 20+ models of modems and a a generic version for oddball modems without cvc and upgrade info. We have about 12-15 tiers of service depending on area which results in several hundred config files, this quickly got unweildly, so I developed a PHP script that uses the docsis sourceforge project to auto generate the config files which greatly simplifies things. If your interested I could share.

Log in or register to post comments