1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2012 OpenWrt.org
4 # needs to start before the atm layer which starts at 50
8 EXTRA_COMMANDS="status lucistat"
9 EXTRA_HELP=" status Get DSL status information
10 lucistat Get status information if lua friendly format"
12 [ -f /lib/functions/lantiq_dsl.sh ] && . /lib/functions/lantiq_dsl.sh
15 # ITU-T G.997.1 (06/2012) - Section 7.3.1.1.1 (xTU transmission system enabling (XTSE))
16 # ITU-T G.997.1 Amendment 2 (04/2013) - Section 2.1 - (Vectoring mode enable (VECTORMODE_ENABLE))
20 # G.992.3 Annex A / L-US1 / L_US-2 / M
24 xtse_xdsl_a="05_01_04_00_4C_01_04_0F"
31 xtse_xdsl_b="10_00_10_00_00_04_00_0F"
40 xtse_xdsl_j="10_00_10_40_00_04_01_0F"
43 xtse_xdsl_bdmt="10_00_00_00_00_00_00_00"
46 xtse_xdsl_b2="00_00_10_00_00_00_00_00"
49 xtse_xdsl_b2p="00_00_00_00_00_04_00_00"
52 xtse_xdsl_at1="01_00_00_00_00_00_00_00"
55 xtse_xdsl_alite="00_01_00_00_00_00_00_00"
58 xtse_xdsl_admt="04_00_00_00_00_00_00_00"
61 xtse_xdsl_a2="00_00_04_00_00_00_00_00"
64 xtse_xdsl_a2p="00_00_00_00_00_01_00_00"
67 xtse_xdsl_l="00_00_00_00_0C_00_00_00"
71 xtse_xdsl_m="00_00_00_00_40_00_04_00"
74 xtse_xdsl_m2="00_00_00_00_40_00_00_00"
77 xtse_xdsl_m2p="00_00_00_00_00_00_04_00"
80 # ITU-T G.994.1 (06/2012) - Table 2 (Mandatory carrier sets)
84 tone_adsl_a="0x142" # A43C + J43 + A43
85 tone_vdsl_a="0x142" # A43C + J43 + A43
88 tone_adsl_av="0x142" # A43C + J43 + A43
89 tone_vdsl_av="0x146" # A43C + J43 + A43 + V43
92 tone_adsl_b="0x81" # B43 + B43c
93 tone_vdsl_b="0x1" # B43
96 tone_adsl_bv="0x81" # B43 + B43c
97 tone_vdsl_bv="0x5" # B43 + V43
100 echo "# VRX Low Level Configuration File
102 # Parameters must be separated by tabs or spaces.
103 # Empty lines and comments will be ignored.
118 # nHsToneGroupMode nHsToneGroup_A nHsToneGroup_V nHsToneGroup_AV
120 # NA = -1 NA = -1 see see
121 # AUTO = 0 VDSL2_B43 = 0x0001 nHsToneGroup_A nHsToneGroup_A
122 # MANUAL = 1 VDSL2_A43 = 0x0002
124 # VDSL1_V43P = 0x0008
125 # VDSL1_V43I = 0x0010
128 # ADSL2_B43C = 0x0080
129 # ADSL2_A43C = 0x0100
131 # (dec) (hex) (hex) (hex)
139 # nUtopiaPhyAdr nUtopiaBusWidth nPosPhyParity
140 # default(16b) = 0 NA = -1
151 0" > /tmp/lowlevel.cfg
155 procd_add_reload_trigger network
169 config_get tone dsl tone
170 config_get annex dsl annex
171 config_get firmware dsl firmware
172 config_get xfer_mode dsl xfer_mode
174 eval "xtse=\"\${xtse_xdsl_$annex}\""
176 [ -z "${xfer_mode}" ] && xfer_mode=ptm
178 case "${xfer_mode}" in
184 # mask out VDSL bits when ATM is requested
194 if [ -z "${firmware}" ]; then
195 # search for the firmware provided by dsl-vrx200-firmware-xdsl-*
196 if grep -qE "system type.*: (VR9|xRX200)" /proc/cpuinfo; then
199 if [ -f "/lib/firmware/lantiq-vrx200-a.bin" ]; then
200 firmware="/lib/firmware/lantiq-vrx200-a.bin"
201 elif [ -f "/tmp/lantiq-vrx200-a.bin" ]; then
202 firmware="/tmp/lantiq-vrx200-a.bin"
203 elif [ -f "/lib/firmware/lantiq-vrx200-b.bin" ] && [ -f "/lib/firmware/lantiq-vrx200-b-to-a.bspatch" ]; then
204 bspatch /lib/firmware/lantiq-vrx200-b.bin \
205 /tmp/lantiq-vrx200-a.bin \
206 /lib/firmware/lantiq-vrx200-b-to-a.bspatch
207 firmware="/tmp/lantiq-vrx200-a.bin"
209 echo "firmware for annex a not found"
214 if [ -f "/lib/firmware/lantiq-vrx200-b.bin" ]; then
215 firmware="/lib/firmware/lantiq-vrx200-b.bin"
216 elif [ -f "/tmp/lantiq-vrx200-b.bin" ]; then
217 firmware="/tmp/lantiq-vrx200-b.bin"
218 elif [ -f "/lib/firmware/lantiq-vrx200-a.bin" ] && [ -f "/lib/firmware/lantiq-vrx200-a-to-b.bspatch" ]; then
219 bspatch /lib/firmware/lantiq-vrx200-a.bin \
220 /tmp/lantiq-vrx200-b.bin \
221 /lib/firmware/lantiq-vrx200-a-to-b.bspatch
222 firmware="/tmp/lantiq-vrx200-b.bin"
224 echo "firmware for annex b not found"
229 echo "annex type not supported use a or b"
236 [ -z "${firmware}" ] && firmware=/lib/firmware/vdsl.bin
237 [ -f "${firmware}" ] || {
238 echo failed to find $firmware
242 eval "tone_adsl=\"\${tone_adsl_$tone}\""
243 eval "tone_vdsl=\"\${tone_vdsl_$tone}\""
244 [ -n "${tone_adsl}" ] && [ -n "${tone_vdsl}" ] && {
245 lowlevel_cfg "${tone_adsl}" "${tone_vdsl}"
246 lowlevel="-l /tmp/lowlevel.cfg"
250 procd_set_param command /sbin/vdsl_cpe_control_wrapper \
252 -n /sbin/dsl_notify.sh \
256 procd_append_param env "LOAD=$LOAD" "UNLOAD=$UNLOAD"
261 # do not use dsl_cmd to not block when this is locked up by some other proess
262 echo quit > /tmp/pipe/dsl_cpe0_cmd
263 DSL_NOTIFICATION_TYPE="DSL_INTERFACE_STATUS" \
264 DSL_INTERFACE_STATUS="DOWN" \