DSLAM


The DSLAM is the Digital Subscriber Line Access Multiplexer or Digitial Subscriber Line Access Modem. The Multiplexer part refers to multiplexing between multiple tenants in an actual network. Practicaly the DSLAM is a Master Modem which controls the actual modem / client.

Allnet ALL126AM2

DSLAM

Specs

  • 100MBit up / 100MBit down VDSL2
  • 1 line
  • 4 Port 10/100MBit ethernet
  • 1 Phone / POTS Port
    • Internal Splitter
  • RS232 / Console Port with full root access

Configuration

All necessary settings can be performed from the VDSL2 -> Profile Config page.

DSLAM PCB Top

Scripts

The initialization of most components is performed via shell scripts. Thus the devices allow a vast amount of customization or remote control.

# cat /nv/vdsl2_selfstart.sh 
#*****************************
#** Script to autostart CPE **
#**       03 March 2006     **
#*****************************

Profile="17A"
lock="x"

if [ $# != 1 ]; then
   echo ---------------------------------------------------
   echo - run with default values
   echo ---------------------------------------------------
else
   if [ $1 = "l" ] ; then
     lock=$1
   else
     Profile=$1
   fi  
fi

if [ -r /etc/rc.conf ]; then
        . /etc/rc.conf
fi


CURRENT_C0_D_MAX=`grep ^VDSL2_Channel_0_DOWN_MAX= /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_C0_D_MIN=`grep ^VDSL2_Channel_0_DOWN_MIN= /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_C0_U_MAX=`grep ^VDSL2_Channel_0_UP_MAX= /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_C0_U_MIN=`grep ^VDSL2_Channel_0_UP_MIN= /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_C0_U_INT=`grep ^VDSL2_Channel_0_UP_MaxIntDelay /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_C0_D_INT=`grep ^VDSL2_Channel_0_DOWN_MaxIntDelay /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_VDSL2_ProfileList=`grep ^VDSL2_ProfileList /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_VDSL2_BandPlanList=`grep ^VDSL2_BandPlanList /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_VDSL2_FilterList=`grep ^VDSL2_FilterList /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_VDSL2_LineModeList=`grep ^VDSL2_LineModeList /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
#CURRENT_VDSL2_Tone=`grep ^VDSL2_LineModeList /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`

CURRENT_VDSL2_U_SNRM=`grep ^VDSL2_Channel_0_UP_SNRM /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_VDSL2_U_MAX_SNRM=`grep ^VDSL2_Channel_0_UP_MAX_SNRM /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_VDSL2_U_MIN_SNRM=`grep ^VDSL2_Channel_0_UP_MIN_SNRM /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`

CURRENT_VDSL2_D_SNRM=`grep ^VDSL2_Channel_0_DOWN_SNRM /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_VDSL2_D_MAX_SNRM=`grep ^VDSL2_Channel_0_DOWN_MAX_SNRM /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`
CURRENT_VDSL2_D_MIN_SNRM=`grep ^VDSL2_Channel_0_DOWN_MIN_SNRM /etc/rc.conf | cut -f2 -d'"' | cut -f3 -d" "`


#       sleep 5
        echo "CURRENT_VDSL2_ProfileList = $CURRENT_VDSL2_ProfileList"
        echo "CURRENT_VDSL2_BandPlanList = $CURRENT_VDSL2_BandPlanList"
        echo "CURRENT_VDSL2_FilterList = $CURRENT_VDSL2_FilterList"
        echo "CURRENT_VDSL2_LineModeList = $CURRENT_VDSL2_LineModeList"
        echo "CURRENT_VDSL2_Tone = $CURRENT_VDSL2_Tone"
        echo "CURRENT_C0_D_MAX = ${CURRENT_C0_D_MAX}"
        echo "CURRENT_C0_D_MIN = ${CURRENT_C0_D_MIN}"
        echo "CURRENT_C0_U_MAX = ${CURRENT_C0_U_MAX}"
        echo "CURRENT_C0_U_MIN = ${CURRENT_C0_U_MIN}"
        echo "CURRENT_C0_U_INT = ${CURRENT_C0_U_INT}"
        echo "CURRENT_C0_D_INT = ${CURRENT_C0_D_INT}"
        echo "CURRENT_VDSL2_U_SNRM = ${CURRENT_VDSL2_U_SNRM}"
        echo "CURRENT_VDSL2_U_MAX_SNRM = ${CURRENT_VDSL2_U_MAX_SNRM}"
        echo "CURRENT_VDSL2_U_MIN_SNRM = ${CURRENT_VDSL2_U_MIN_SNRM}"
        echo "CURRENT_VDSL2_D_SNRM = ${CURRENT_VDSL2_D_SNRM}"
        echo "CURRENT_VDSL2_D_MAX_SNRM = ${CURRENT_VDSL2_D_MAX_SNRM}"
        echo "CURRENT_VDSL2_D_MIN_SNRM = ${CURRENT_VDSL2_D_MIN_SNRM}"
#       sleep 5

        case ${CURRENT_VDSL2_ProfileList} in

        0)
        Profile="8A"
        echo "$Profile" 
        ;;

        1)
        Profile="8B"
        echo "$Profile"
        ;;

        2)
        Profile="8C"
        echo "$Profile"
        ;;
        
        3)
        Profile="8D"
        echo "$Profile"
        ;;
        
        4)
        Profile="12A"
        echo "$Profile"
        ;;

        5)
        Profile="12B"
        echo "$Profile"
        ;;

        6)
        Profile="17A"
        echo "$Profile"
        ;;
        
        7)
        Profile="30A"
        echo "$Profile"
        ;;
        8)
        Profile="17B"
        echo "$Profile"
        ;;
        esac

cd /ifx/vdsl2

if [ $lock = "l" ] ; then

   echo "... Disable Autorestart ..."
   ./dsl_pipe dms 0 0549 0 1 0
   ./dsl_pipe dms 0 0649 0 1 0

else
   # configure System Interface MII, EFM-TC
   ./dsl_pipe sics 0 1 2
   # channel config set int delay 0 and data rate 64k - 140M
#   ./dsl_pipe g997ccs 0 0 0 64000 140000000 10 0 2
#   ./dsl_pipe g997ccs 0 0 1 64000 140000000 10 0 2
   ./dsl_pipe g997ccs 0 0 0 ${CURRENT_C0_U_MIN}000 ${CURRENT_C0_U_MAX}000 ${CURRENT_C0_U_INT} 0 2
   ./dsl_pipe g997ccs 0 0 1 ${CURRENT_C0_D_MIN}000 ${CURRENT_C0_D_MAX}000 ${CURRENT_C0_D_INT} 0 2

   if [ $CURRENT_VDSL2_LineModeList = 0 ]; then
        CURRENT_VDSL2_Tone="1"
   elif [ $CURRENT_VDSL2_LineModeList = 1 ]; then
        CURRENT_VDSL2_Tone="2"
   elif [ $CURRENT_VDSL2_LineModeList = 2 ]; then
        CURRENT_VDSL2_Tone="4"
   elif [ $CURRENT_VDSL2_LineModeList = 3 ]; then
        CURRENT_VDSL2_Tone="8"
   elif [ $CURRENT_VDSL2_LineModeList = 4 ]; then
        CURRENT_VDSL2_Tone="10"
   elif [ $CURRENT_VDSL2_LineModeList = 5 ]; then
        CURRENT_VDSL2_Tone="20"
   elif [ $CURRENT_VDSL2_LineModeList = 6 ]; then
        CURRENT_VDSL2_Tone="40"
   elif [ $CURRENT_VDSL2_LineModeList = 7 ]; then
        CURRENT_VDSL2_Tone="80"
   elif [ $CURRENT_VDSL2_LineModeList = 8 ]; then
        CURRENT_VDSL2_Tone="100"
   fi
        echo "LineModeList = $CURRENT_VDSL2_LineModeList"
        echo "CURRENT_VDSL2_Tone = $CURRENT_VDSL2_Tone"
        

   if [ $CURRENT_VDSL2_LineModeList = 2 ]; then
      ./dsl_pipe lllcs  0 -1 -1 -1 -1 -1 -1 -1 -1 -1 4 ${CURRENT_VDSL2_FilterList} -1 -1 -1 -1 -1 2
   else
      ./dsl_pipe lllcs  0 -1 -1 -1 -1 -1 -1 -1 -1 -1 ${CURRENT_VDSL2_Tone} ${CURRENT_VDSL2_FilterList} -1 -1 -1 -1 -1 0
   fi

     # echo bandplan 30a,17a,12a or 8a
      echo bandplan "$Profile"
      ./dsl_pipe bpcs 0 ${CURRENT_VDSL2_BandPlanList} ${CURRENT_VDSL2_ProfileList}


#       sleep 1
#       echo "g997nmcg"

        ./dsl_pipe g997nmcg 0 0
        ./dsl_pipe g997nmcg 0 1
#       sleep 1

#       echo "g997nmcs"
        ./dsl_pipe g997nmcs 0 0 ${CURRENT_VDSL2_U_SNRM} ${CURRENT_VDSL2_U_MAX_SNRM} ${CURRENT_VDSL2_U_MIN_SNRM}
        ./dsl_pipe g997nmcs 0 1 ${CURRENT_VDSL2_D_SNRM} ${CURRENT_VDSL2_D_MAX_SNRM} ${CURRENT_VDSL2_D_MIN_SNRM}


   # activate line
   ./dsl_pipe la 0
fi
sleep 5
# disable the system interface for the first time until showtime is reached 
./dsl_pipe dms 0 0xA173 0 2 000E2040 00000037
echo "done"
echo
# cat /nv/vdsl2_start.sh 
#! /bin/sh

#
# CPE Ref Board: Start of the VDSL2 applications
# Call this script manually or via startup scripts.
#
# For setup see
#               /etc/vdsl2.conf --> /nv/vdsl2.conf (flash file)
#

echo Start VDSL2 CPE Ref environment

#
# Get the VDSL2 Board specific configuration.
if [ -r /etc/vdsl2.conf ]; then
        . /etc/vdsl2.conf
else
   VDSL2_START_APP_WINHOST="0"
   VDSL2_START_APP_CPE_RB="1"
   VDSL2_START_APP_DSL_DAEMON="0"
fi


if [ ${EXEC_VDSL2_POST_INIT} != 1 ];then
        echo "skip VDSL2 post init"
        exit
fi

if [ ${VDSL2_FW_DOWNLOAD} != 0 ];then
        echo "Start VINAX firmeware download"
        ./vinax_drv_test -F
fi


if [ ${VDSL2_START_APP_WINHOST} != 0 ];then
        echo "Start VDSL2 WinHost Application"
        ./winhost_vdsl2_dfe &
fi

if [ ${VDSL2_START_APP_CPE_RB} != 0 ];then
        echo "Start VDSL2 CPE Ref Application"
        ./vdsl2_cpe_rb &
fi

if [ ${VDSL2_START_APP_DSL_DAEMON} != 0 ];then
        echo "Start VDSL2 DSL DAEMON Application"
        ./dsl_daemon &
        sleep 3
fi

if [ ${VDSL2_DSL_DAEMON_AUTOSTART} != 0 ];then
       echo "Autostarting the line: param " ${VDSL2_DSL_DAEMON_AUTOSTART}
       sleep 2
       cd /nv/
       ./vdsl2_selfstart.sh ${VDSL2_DSL_DAEMON_AUTOSTART}
fi       
# cat /etc/vdsl2.conf 
# VDSL2 configuration on ADM5120 CPE Ref Board

#
# VDLS2 directory
VDSL2_DIR="/ifx/vdsl2"

#
# used driver names
VDSL2_BOARD_DRV_NAME=drv_adm5120_rb
VDSL2_MEI_DRV_NAME=drv_vinax

#
# VDSL2 firmware file names
VDSL2_FW_NAME_CO=vco_hw.bin
VDSL2_FW_NAME_CPE=vcpe_hw.bin

#
# Update FW while startup
VDSL2_FW_UPDATE="0"

#
# TFTP server IP for download 
# if not set the default_router IP (ISP Gateway Address) will be used
VDSL2_TFTP_SERVER_IP=""
VDSL2_REMOTE_FW_NAME=""

#
# Get Boot Parameter for VDSL2 CO or CPE configuration
BOOT_PARAM_CO_CPE_OFFSET="0x1F0"

#
# initialization stuff before net-init
EXEC_VDSL2_PRE_INIT="1"

#
# initialization stuff after net-init
EXEC_VDSL2_POST_INIT="1"

#
# Used Driver Debug Level
VDSL2_DRV_DBG_LEVEL="3"

#
# start VINAX FW download
VDSL2_FW_DOWNLOAD="1"

#
# start winhost
VDSL2_START_APP_WINHOST="0"

#
# start vdsl2_cpe_rb
VDSL2_START_APP_CPE_RB="0"

#
# start dsl_daemon
VDSL2_START_APP_DSL_DAEMON="1"

#
# autostart feature of the line
# specify 0, 17A, 30A or whatever is known by selfstart.sh
VDSL2_DSL_DAEMON_AUTOSTART="30A"

Internals

Versions

Firmware Version

DSLAM PCB Top

While not having found the firmware online, the Allnet customer support is very very quick in sending a temporary DL link.

Chipset Version

DSLAM PCB Top

PCB

Top Bottom
DSLAM PCB Top DSLAM PCB Bottom

Infineon ADM5120P

Infineon ADM5120P

  • Infineon ADM5120P AB1104 HALQ000591X02SL
  • SoC with networking capabilities
  • 208-pin LQFP
  • 175MHZ / 227 MIPS 4Kc CPU
  • 5 Port 10/100MBit PHY

Lantiq PSB 80600 E

  • Lantiq PSB 80600 E V1.1 VINAX-D ZA022056M04 H1026
  • VDSL Bridge Modem?

A short note on Lantiq: Used to belong to Infineon, sold to Intel in 2015. Datasheets are rather rather

Lantiq PSB 80170 E

  • Lantiq PSB 80170 E V1.1 VINAX-A M5106304.01 H1044
  • AFE/LD
    • ADSL Front End / Line Driver

ALL126AM2 vs ALL126AS2

I was recently asked whether the ALL126AS2 and ALL126AM2 might be using the same hardware, just with different firmware settings. A potential hint to this comes from the TFTP flashing guide:

Nun begeben Sie sich zu Punkt Nr. „4“ -> Set Boot Parameters. Alles was gefragt wird, mit „Enter“ bestätigen. Achten Sie bitte beim letzten Punkt darauf, dass Sie das Modem als „CPE (0)“ (Slave)(CO (1) beim Master) einrichten. Zu guter Letzt empfehle ich hiernach einen Reset auf FactoryDefault zu vollziehen. 

Saying that one has to select a boot parameter and carefully switch between CPE/Slave and CO/Master mode. I do currently not have the AS version, but I will add some information, soon.

# cat /nv/vdsl2_hw_type.sh 
#! /bin/sh

#
# Get the VDSL2 Board specific configuration.
if [ -r /etc/vdsl2.conf ]; then
        . /etc/vdsl2.conf
fi

#
# Check if the board driver is loaded
BOARD_DRV_LOADED=`lsmod | grep ${VDSL2_BOARD_DRV_NAME} | cut -b1-14`
case ${BOARD_DRV_LOADED} in
   drv_adm5120_rb) echo "board driver <${VDSL2_BOARD_DRV_NAME}> loaded"
                        ;;
   *) echo "ERROR: no board driver <${VDSL2_BOARD_DRV_NAME}> - can not check HW type"
      exit 1 ;;
esac


#
# get the current HW type (CO or CPE) from the boot parameters
# board driver must be installed before
CURR_HW_TYPE=`./test_adm5120_rb -m | grep 'CPE_CO_Mode=' | cut -d= -f2`

echo "current HW type is ${CURR_HW_TYPE}"

# unpack firmware binary
if [ -e ./fw_packed.bin.gz ]; then
   if [ -e /tmp ]; then
      if [ ! -e /tmp/fw ]; then
         mkdir /tmp/fw
      fi

      case ${CURR_HW_TYPE} in
         CPE_MODE) echo "+++ unpack CPE firmware +++"
               gunzip -c ./fw_packed.bin.gz > /tmp/fw/vcpe_hw.bin
               ln -sf /tmp/fw/vcpe_hw.bin ./${VDSL2_FW_NAME_CPE}
                              ;;
         CO_MODE) echo "+++ unpack CO firmware +++"
               gunzip -c ./fw_packed.bin.gz > /tmp/fw/vco_hw.bin
               ln -sf /tmp/fw/vco_hw.bin ./${VDSL2_FW_NAME_CO}
                              ;;
         *) echo "ERROR: missing or invalid HW configuration"
            exit 1 ;;
      esac
   else
      echo
      echo "!!! WARNING tmpfs must be enabled !!!"
      echo
   fi
fi


# check HW type
case ${CURR_HW_TYPE} in
   CPE_MODE) echo "+++ setup CPE firmware ${VDSL2_FW_NAME_CPE} +++"
                        if [ -e ./${VDSL2_FW_NAME_CPE} ]; then
                                ln -sf ./${VDSL2_FW_NAME_CPE} ./firmware.bin
                                ln -sf ./${VDSL2_FW_NAME_CPE} ./firmware0.bin
                                ln -sf ./${VDSL2_FW_NAME_CPE} ./firmware1.bin
                        else
                                echo
                                echo "!!! WARNING firmware file ${VDSL2_FW_NAME_CPE} does not exits !!!"
                                echo
                        fi
                        ;;
   CO_MODE) echo "+++ setup CO firmware ${VDSL2_FW_NAME_CO} +++"
                        if [ -e ./${VDSL2_FW_NAME_CO} ]; then
                                ln -sf ./${VDSL2_FW_NAME_CO} ./firmware.bin
                                ln -sf ./${VDSL2_FW_NAME_CO} ./firmware0.bin
                                ln -sf ./${VDSL2_FW_NAME_CO} ./firmware1.bin
                        else
                                echo
                                echo "!!! WARNING firmware file ${VDSL2_FW_NAME_CO} does not exits !!!"
                                echo
                        fi
                        ;;
   *) echo "ERROR: missing or invalid HW configuration"
      exit 1 ;;
esac

Refrences

I have a copy of each of these documents stored aways, just ask if a link should be down.