diff --git a/ponmngr/files/airoha/lib/xpon/airoha.sh b/ponmngr/files/airoha/lib/xpon/airoha.sh index 46b010cc9..a599717d3 100644 --- a/ponmngr/files/airoha/lib/xpon/airoha.sh +++ b/ponmngr/files/airoha/lib/xpon/airoha.sh @@ -2,12 +2,14 @@ . /lib/functions.sh +set_serial_number() { + vendor_id=$1 + vssn=$2 + + /userfs/bin/omcicfgCmd set sn ${vendor_id}${vssn} +} + init_xpon() { - macaddr="$(fw_printenv -n ethaddr | tr -d ':' | tr 'a-z' 'A-Z')" - - # For now use IOPG + last 8 digits of the base mac address as the omci serial number - /userfs/bin/omcicfgCmd set sn IOPG${macaddr:4:8} - procd_open_instance ponmgr_cfg procd_set_param command /userfs/bin/ponmgr_cfg procd_close_instance diff --git a/ponmngr/files/broadcom/lib/xpon/broadcom.sh b/ponmngr/files/broadcom/lib/xpon/broadcom.sh index 575f18c5c..68a605819 100644 --- a/ponmngr/files/broadcom/lib/xpon/broadcom.sh +++ b/ponmngr/files/broadcom/lib/xpon/broadcom.sh @@ -2,6 +2,16 @@ . /lib/functions.sh +set_serial_number() { + vendor_id=$1 + vssn=$2 + + vendor_id="$(echo $vendor_id | hexdump -e '4/1 "%02X" "\n"')" + vendor_id=${vendor_id:0:8} + + bs /b/c gpon onu_sn={vendor_id=$vendor_id,vendor_specific=$vssn} +} + init_xpon() { procd_open_instance pon_msgd procd_set_param command bcm_msgd -c gpon diff --git a/ponmngr/files/common/etc/init.d/xpon b/ponmngr/files/common/etc/init.d/xpon index d7d1f46aa..c25c145e8 100755 --- a/ponmngr/files/common/etc/init.d/xpon +++ b/ponmngr/files/common/etc/init.d/xpon @@ -8,8 +8,23 @@ USE_PROCD=1 . /lib/functions.sh include /lib/xpon +configure_serial_number() { + serial_number="$(uci -q get xpon.ani.serial_number)" + if [ ${#serial_number} -eq 12 ]; then + vendor_id="${serial_number:0:4}" + vssn="${serial_number:4:8}" + else + macaddr="$(fw_printenv -n ethaddr | tr -d ':' | tr 'a-z' 'A-Z')" + vendor_id="IOPS" + vssn="${macaddr:4:8}" + fi + + set_serial_number $vendor_id $vssn +} + start_service() { if [ "$(uci -q get xpon.ani.enable)" == "1" ]; then + configure_serial_number init_xpon fi }