Attempt to recover bricked modem without help of ViaSat. Surf Beam RM5111
Contact https://www.mailinator.com/v4/public/inboxes.jsp?to=viasat.
By default UART0's pin RX0 and TX0 is accessible via J24 pin header. Resistor R519 might be missing to access serial.
During boot up process, when image is read, ground data pins / reset pins on the flast - this will cause integrity error and modem will display uBoot console.
Now you can modify ENV to enable shell on the modem or access uBoot tools to extract and upload firmware.
env set bootdelay=3
env set cli_enable 1
cli_flags="0xFF"
cli_enable="1"
ViaSat UT2# help
? - alias for 'help'
base - print or set address offset
base64 - print or set address offset
bdinfo - print Board Info structure
bootloaderupdate- Update the bootloader in flash
bootloadervalidate- Validate the bootloader image
bootp - boot image via network using BOOTP/TFTP protocol
bootstage3 - Load and execute the stage 3 bootloader
cmp - memory compare
cmp64 - memory compare
cp - memory copy
cp64 - memory copy
crc32 - checksum calculation
echo - echo args to console
eeprom - EEPROM sub-system
env - environment handling commands
ext2load - load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
ext4load - load binary file from a Ext4 filesystem
ext4ls - list files in a directory (default /)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
fatwrite - write file into a dos filesystem
fdt - flattened device tree utility commands
flush_dcache- Flushes and invalidates the data cache
flush_l2c - Flushes the L2 cache
freeprint - Print list of free bootmem blocks
go - start application at address 'addr'
gpio - input/set/clear/toggle gpio pins
grepenv - search environment variables
help - print command description/usage
i2c - I2C sub-system
inv_icache - Invalidates the instruction cache
loadb - load binary file over serial line (kermit mode)
loady - load binary file over serial line (ymodem mode)
loop - infinite loop on address range
loop64 - infinite loop on address range
md - memory display
md64 - memory display
meminfo - display memory information
mm - memory modify (auto-incrementing address)
mm64 - memory modify (auto-incrementing address)
mmc - MMC sub system
mmcinfo - display MMC info
mw - memory write (fill)
mw64 - memory write (fill)
namedalloc - Allocate a named bootmem block
namedfree - Free a named bootmem block
namedprint - Print list of named bootmem blocks
nm - memory modify (constant address)
nm64 - memory modify (constant address)
nmi - Generate a non-maskable interrupt
octbootbus - print boot bus parameters
printenv - print environment variables
read64 - read 64 bit word from 64 bit address (deprecated)
read64b - read 8 bit word from 64 bit address (deprecated)
read64l - read 32 bit word from 64 bit address (deprecated)
read64s - read 16 bit word from 64 bit address (deprecated)
reset - Perform RESET of the CPU
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv - set environment variables
sha1sum - compute SHA1 message digest
tftp - alias for tftpboot command (deprecated)
tftpboot - boot image via network using TFTP protocol
time - run commands and summarize execution time
tlv_eeprom - EEPROM data parsing
unzip - unzip a memory region
version - print monitor, compiler and linker version
write64 - write 64 bit word to 64 bit address (deprecated)
write64b - write 8 bit word to 64 bit address (deprecated)
write64l - write 32 bit word to 64 bit address (deprecated)
write64s - write 16 bit word to 64 bit address (deprecated)
ViaSat UT2#
cat /proc/partitions
major minor #blocks name
31 0 512 mtdblock0
31 1 14336 mtdblock1
31 2 14336 mtdblock2
31 3 128 mtdblock3
31 4 3328 mtdblock4
31 5 128 mtdblock5
Partition Map for MMC device 1 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 2048 262144 d999a303-01 0e Boot
2 264192 262144 d999a303-02 0e Boot
3 526336 14579712 d999a303-03 83
│ ├── basename -> busybox
│ ├── hostname -> busybox
│ ├── readlink -> busybox
│ ├── traceroute -> busybox
│ ├── traceroute6 -> busybox
├── Demod_Control_LUT.bin
│ ├── core -> /proc/kcore
│ ├── fd -> /proc/self/fd
│ ├── mtab -> /proc/mounts
│ │ ├── init.d -> ../init.d
│ │ ├── S03mountvirtfs -> ../init.d/mountvirtfs
│ │ ├── S10checkroot.sh -> ../init.d/checkroot.sh
│ │ ├── S35devpts.sh -> ../init.d/devpts.sh
│ │ └── S95inetd -> ../init.d/inetd
│ ├── leds-octeon-gpio.ko
│ ├── ld.so.1 -> ld-2.5.90.so
│ ├── libblkid.so.1 -> libblkid.so.1.0
│ ├── libcrypt.so.1 -> libcrypt-2.5.90.so
│ ├── libc.so.6 -> libc-2.5.90.so
│ ├── libdl.so.2 -> libdl-2.5.90.so
│ ├── libgcc_s.so -> libgcc_s.so.1
│ ├── libm.so.6 -> libm-2.5.90.so
│ ├── libncurses.so.5 -> libncurses.so.5.4
│ ├── libnsl.so.1 -> libnsl-2.5.90.so
│ ├── libnss_dns-2.5.90.so
│ ├── libnss_dns.so.2 -> libnss_dns-2.5.90.so
│ ├── libnss_files-2.5.90.so
│ ├── libnss_files.so.2 -> libnss_files-2.5.90.so
│ ├── libpthread-2.5.90.so
│ ├── libpthread.so.0 -> libpthread-2.5.90.so
│ ├── libresolv-2.5.90.so
│ ├── libresolv.so.2 -> libresolv-2.5.90.so
│ ├── librt.so.1 -> librt-2.5.90.so
│ ├── libstdc++.so -> libstdc++.so.6.0.9
│ ├── libstdc++.so.6 -> libstdc++.so.6.0.9
│ ├── libthread_db-1.0.so
│ ├── libthread_db.so.1 -> libthread_db-1.0.so
│ ├── libutil.so.1 -> libutil-2.5.90.so
│ ├── libuuid.so.1 -> libuuid.so.1.2
│ ├── libwrap.so.0 -> libwrap.so.0.7.6
├── linuxrc -> /bin/busybox
├── oct-linux-csr -> /root/ut_mac
│ │ ├── Client_privKey.pem
│ ├── arp -> ../bin/busybox
│ ├── brctl -> ../bin/busybox
│ ├── fdisk -> ../bin/busybox
│ ├── fsck -> ../bin/busybox
│ ├── getty -> ../bin/busybox
│ ├── halt -> ../bin/busybox
│ ├── hdparm -> ../bin/busybox
│ ├── ifconfig -> ../bin/busybox
│ ├── ifdown -> ../bin/busybox
│ ├── ifup -> ../bin/busybox
│ ├── init -> ../bin/busybox
│ ├── insmod -> ../bin/busybox
│ ├── ip -> ../bin/busybox
│ ├── killall5 -> ../bin/busybox
│ ├── klogd -> ../bin/busybox
│ ├── losetup -> ../bin/busybox
│ ├── lsmod -> ../bin/busybox
│ ├── makedevs -> ../bin/busybox
│ ├── mkswap -> ../bin/busybox
│ ├── modprobe -> ../bin/busybox
│ ├── nameif -> ../bin/busybox
│ ├── pidof -> ../bin/busybox
│ ├── pivot_root -> ../bin/busybox
│ ├── poweroff -> ../bin/busybox
│ ├── reboot -> ../bin/busybox
│ ├── rmmod -> ../bin/busybox
│ ├── route -> ../bin/busybox
│ ├── start-stop-daemon -> ../bin/busybox
│ ├── sulogin -> ../bin/busybox
│ ├── swapoff -> ../bin/busybox
│ ├── swapon -> ../bin/busybox
│ ├── switch_root -> ../bin/busybox
│ ├── sysctl -> ../bin/busybox
│ ├── syslogd -> ../bin/busybox
│ ├── udhcpc -> ../bin/busybox
│ └── vconfig -> ../bin/busybox
├── TxBurst -> /root/ut_mac
│ │ ├── [ -> ../../bin/busybox
│ │ ├── [[ -> ../../bin/busybox
│ │ ├── arping -> ../../bin/busybox
│ │ ├── awk -> ../../bin/busybox
│ │ ├── beamSelect -> /root/ut_mac
│ │ ├── bunzip2 -> ../../bin/busybox
│ │ ├── bzcat -> ../../bin/busybox
│ │ ├── bzip2 -> ../../bin/busybox
│ │ ├── certcheck -> /root/ut_mac
│ │ ├── chrt -> ../../bin/busybox
│ │ ├── clear -> ../../bin/busybox
│ │ ├── cmp -> ../../bin/busybox
│ │ ├── crontab -> ../../bin/busybox
│ │ ├── dc -> ../../bin/busybox
│ │ ├── diff -> ../../bin/busybox
│ │ ├── dirname -> ../../bin/busybox
│ │ ├── dos2unix -> ../../bin/busybox
│ │ ├── du -> ../../bin/busybox
│ │ ├── dumpleases -> ../../bin/busybox
│ │ ├── expr -> ../../bin/busybox
│ │ ├── find -> ../../bin/busybox
│ │ ├── flock -> ../../bin/busybox
│ │ ├── fold -> ../../bin/busybox
│ │ ├── free -> ../../bin/busybox
│ │ ├── ftpget -> ../../bin/busybox
│ │ ├── ftpput -> ../../bin/busybox
│ │ ├── getopt -> ../../bin/busybox
│ │ ├── head -> ../../bin/busybox
│ │ ├── hexdump -> ../../bin/busybox
│ │ ├── hostid -> ../../bin/busybox
│ │ ├── id -> ../../bin/busybox
│ │ ├── install -> ../../bin/busybox
│ │ ├── iostat -> ../../bin/busybox
│ │ ├── killall -> ../../bin/busybox
│ │ ├── last -> ../../bin/busybox
│ │ ├── length -> ../../bin/busybox
│ │ ├── logger -> ../../bin/busybox
│ │ ├── logname -> ../../bin/busybox
│ │ ├── md5sum -> ../../bin/busybox
│ │ ├── mesg -> ../../bin/busybox
│ │ ├── mkfifo -> ../../bin/busybox
│ │ ├── mpstat -> ../../bin/busybox
│ │ ├── nc -> ../../bin/busybox
│ │ ├── nslookup -> ../../bin/busybox
│ │ ├── passwd -> ../../bin/busybox
│ │ ├── patch -> ../../bin/busybox
│ │ ├── pmap -> ../../bin/busybox
│ │ ├── printf -> ../../bin/busybox
│ │ ├── realpath -> ../../bin/busybox
│ │ ├── renice -> ../../bin/busybox
│ │ ├── reset -> ../../bin/busybox
│ │ ├── run-parts -> ../../bin/busybox
│ │ ├── seq -> ../../bin/busybox
│ │ ├── sha1sum -> ../../bin/busybox
│ │ ├── strings -> ../../bin/busybox
│ │ ├── swValidate -> /root/ut_mac
│ │ ├── tail -> ../../bin/busybox
│ │ ├── tee -> ../../bin/busybox
│ │ ├── telnet -> ../../bin/busybox
│ │ ├── test -> ../../bin/busybox
│ │ ├── time -> ../../bin/busybox
│ │ ├── timeout -> ../../bin/busybox
│ │ ├── tr -> ../../bin/busybox
│ │ ├── tty -> ../../bin/busybox
│ │ ├── uniq -> ../../bin/busybox
│ │ ├── unix2dos -> ../../bin/busybox
│ │ ├── unzip -> ../../bin/busybox
│ │ ├── uptime -> ../../bin/busybox
│ │ ├── uudecode -> ../../bin/busybox
│ │ ├── uuencode -> ../../bin/busybox
│ │ ├── wc -> ../../bin/busybox
│ │ ├── wget -> ../../bin/busybox
│ │ ├── which -> ../../bin/busybox
│ │ ├── who -> ../../bin/busybox
│ │ ├── whoami -> ../../bin/busybox
│ │ ├── xargs -> ../../bin/busybox
│ │ └── yes -> ../../bin/busybox
│ │ ├── libebtable_broute.so
│ │ ├── libebtable_filter.so
│ │ ├── libebtable_nat.so
│ │ ├── libebt_arpreply.so
│ │ ├── libebt_pkttype.so
│ │ ├── libebt_redirect.so
│ │ ├── libebt_standard.so
│ │ ├── libelf.so -> libelf.so.1
│ │ ├── libelf.so.1 -> libelf-0.108.so
│ │ ├── librt.so -> ../../lib32/librt.so.1
│ │ ├── libz.so -> libz.so.1
│ │ ├── libz.so.1 -> libz.so.1.2.3
│ │ ├── arp -> ../../bin/busybox
│ │ ├── chroot -> ../../bin/busybox
│ │ ├── flashcp -> ../../bin/busybox
│ │ ├── flash_erase -> ../../bin/busybox
│ │ ├── flash_eraseall -> ../../bin/busybox
│ │ ├── flash_lock -> ../../bin/busybox
│ │ ├── flash_unlock -> ../../bin/busybox
│ │ ├── inetd -> ../../bin/busybox
│ │ ├── telnetd -> ../../bin/busybox
│ │ └── udhcpd -> ../../bin/busybox
48 directories, 397 files
│ │ ├── basename -> busybox
│ │ ├── gunzip -> busybox
│ │ ├── hostname -> busybox
│ │ ├── ipcalc -> busybox
│ │ ├── mktemp -> busybox
│ │ ├── netstat -> busybox
│ │ ├── readlink -> busybox
│ │ ├── traceroute -> busybox
│ │ ├── traceroute6 -> busybox
│ │ ├── umount -> busybox
│ │ ├── usleep -> busybox
│ ├── Demod_Control_LUT.bin
│ │ ├── core -> /proc/kcore
│ │ ├── fd -> /proc/self/fd
│ │ ├── mtab -> /proc/mounts
│ │ │ ├── init.d -> ../init.d
│ │ │ ├── S03mountvirtfs -> ../init.d/mountvirtfs
│ │ │ ├── S10checkroot.sh -> ../init.d/checkroot.sh
│ │ │ ├── S35devpts.sh -> ../init.d/devpts.sh
│ │ │ └── S95inetd -> ../init.d/inetd
│ │ │ └── ebtables-config
│ ├── LDPC_Address_LUT.bin
│ │ ├── leds-octeon-gpio.ko
│ │ ├── ld.so.1 -> ld-2.5.90.so
│ │ ├── libblkid.so.1 -> libblkid.so.1.0
│ │ ├── libcrypt-2.5.90.so
│ │ ├── libcrypt.so.1 -> libcrypt-2.5.90.so
│ │ ├── libc.so.6 -> libc-2.5.90.so
│ │ ├── libdl.so.2 -> libdl-2.5.90.so
│ │ ├── libgcc_s.so -> libgcc_s.so.1
│ │ ├── libm.so.6 -> libm-2.5.90.so
│ │ ├── libncurses.so.5 -> libncurses.so.5.4
│ │ ├── libncurses.so.5.4
│ │ ├── libnsl.so.1 -> libnsl-2.5.90.so
│ │ ├── libnss_dns-2.5.90.so
│ │ ├── libnss_dns.so.2 -> libnss_dns-2.5.90.so
│ │ ├── libnss_files-2.5.90.so
│ │ ├── libnss_files.so.2 -> libnss_files-2.5.90.so
│ │ ├── libpthread-2.5.90.so
│ │ ├── libpthread.so.0 -> libpthread-2.5.90.so
│ │ ├── libresolv-2.5.90.so
│ │ ├── libresolv.so.2 -> libresolv-2.5.90.so
│ │ ├── librt.so.1 -> librt-2.5.90.so
│ │ ├── libstdc++.so -> libstdc++.so.6.0.9
│ │ ├── libstdc++.so.6 -> libstdc++.so.6.0.9
│ │ ├── libstdc++.so.6.0.9
│ │ ├── libthread_db-1.0.so
│ │ ├── libthread_db.so.1 -> libthread_db-1.0.so
│ │ ├── libutil-2.5.90.so
│ │ ├── libutil.so.1 -> libutil-2.5.90.so
│ │ ├── libuuid.so.1 -> libuuid.so.1.2
│ │ ├── libwrap.so.0 -> libwrap.so.0.7.6
│ ├── linuxrc -> /bin/busybox
│ ├── oct-linux-csr -> /root/ut_mac
│ │ │ ├── Client_Cert.pem
│ │ │ ├── Client_privKey.pem
│ │ │ └── authorized_keys
│ │ ├── arp -> ../bin/busybox
│ │ ├── brctl -> ../bin/busybox
│ │ ├── fdisk -> ../bin/busybox
│ │ ├── fsck -> ../bin/busybox
│ │ ├── getty -> ../bin/busybox
│ │ ├── halt -> ../bin/busybox
│ │ ├── hdparm -> ../bin/busybox
│ │ ├── ifconfig -> ../bin/busybox
│ │ ├── ifdown -> ../bin/busybox
│ │ ├── ifup -> ../bin/busybox
│ │ ├── init -> ../bin/busybox
│ │ ├── insmod -> ../bin/busybox
│ │ ├── ip -> ../bin/busybox
│ │ ├── killall5 -> ../bin/busybox
│ │ ├── klogd -> ../bin/busybox
│ │ ├── losetup -> ../bin/busybox
│ │ ├── lsmod -> ../bin/busybox
│ │ ├── makedevs -> ../bin/busybox
│ │ ├── mkswap -> ../bin/busybox
│ │ ├── modprobe -> ../bin/busybox
│ │ ├── nameif -> ../bin/busybox
│ │ ├── pidof -> ../bin/busybox
│ │ ├── pivot_root -> ../bin/busybox
│ │ ├── poweroff -> ../bin/busybox
│ │ ├── reboot -> ../bin/busybox
│ │ ├── rmmod -> ../bin/busybox
│ │ ├── route -> ../bin/busybox
│ │ ├── start-stop-daemon -> ../bin/busybox
│ │ ├── sulogin -> ../bin/busybox
│ │ ├── swapoff -> ../bin/busybox
│ │ ├── swapon -> ../bin/busybox
│ │ ├── switch_root -> ../bin/busybox
│ │ ├── sysctl -> ../bin/busybox
│ │ ├── syslogd -> ../bin/busybox
│ │ ├── udhcpc -> ../bin/busybox
│ │ └── vconfig -> ../bin/busybox
│ ├── TxBurst -> /root/ut_mac
│ │ │ ├── [ -> ../../bin/busybox
│ │ │ ├── [[ -> ../../bin/busybox
│ │ │ ├── arping -> ../../bin/busybox
│ │ │ ├── awk -> ../../bin/busybox
│ │ │ ├── beamSelect -> /root/ut_mac
│ │ │ ├── bunzip2 -> ../../bin/busybox
│ │ │ ├── bzcat -> ../../bin/busybox
│ │ │ ├── bzip2 -> ../../bin/busybox
│ │ │ ├── certcheck -> /root/ut_mac
│ │ │ ├── chrt -> ../../bin/busybox
│ │ │ ├── clear -> ../../bin/busybox
│ │ │ ├── cmp -> ../../bin/busybox
│ │ │ ├── crontab -> ../../bin/busybox
│ │ │ ├── dc -> ../../bin/busybox
│ │ │ ├── diff -> ../../bin/busybox
│ │ │ ├── dirname -> ../../bin/busybox
│ │ │ ├── dos2unix -> ../../bin/busybox
│ │ │ ├── du -> ../../bin/busybox
│ │ │ ├── dumpleases -> ../../bin/busybox
│ │ │ ├── expr -> ../../bin/busybox
│ │ │ ├── find -> ../../bin/busybox
│ │ │ ├── flock -> ../../bin/busybox
│ │ │ ├── fold -> ../../bin/busybox
│ │ │ ├── free -> ../../bin/busybox
│ │ │ ├── ftpget -> ../../bin/busybox
│ │ │ ├── ftpput -> ../../bin/busybox
│ │ │ ├── getopt -> ../../bin/busybox
│ │ │ ├── head -> ../../bin/busybox
│ │ │ ├── hexdump -> ../../bin/busybox
│ │ │ ├── hostid -> ../../bin/busybox
│ │ │ ├── id -> ../../bin/busybox
│ │ │ ├── install -> ../../bin/busybox
│ │ │ ├── iostat -> ../../bin/busybox
│ │ │ ├── killall -> ../../bin/busybox
│ │ │ ├── last -> ../../bin/busybox
│ │ │ ├── length -> ../../bin/busybox
│ │ │ ├── logger -> ../../bin/busybox
│ │ │ ├── logname -> ../../bin/busybox
│ │ │ ├── md5sum -> ../../bin/busybox
│ │ │ ├── mesg -> ../../bin/busybox
│ │ │ ├── mkfifo -> ../../bin/busybox
│ │ │ ├── mpstat -> ../../bin/busybox
│ │ │ ├── nc -> ../../bin/busybox
│ │ │ ├── nslookup -> ../../bin/busybox
│ │ │ ├── passwd -> ../../bin/busybox
│ │ │ ├── patch -> ../../bin/busybox
│ │ │ ├── pmap -> ../../bin/busybox
│ │ │ ├── printf -> ../../bin/busybox
│ │ │ ├── realpath -> ../../bin/busybox
│ │ │ ├── renice -> ../../bin/busybox
│ │ │ ├── reset -> ../../bin/busybox
│ │ │ ├── run-parts -> ../../bin/busybox
│ │ │ ├── seq -> ../../bin/busybox
│ │ │ ├── sha1sum -> ../../bin/busybox
│ │ │ ├── strings -> ../../bin/busybox
│ │ │ ├── swValidate -> /root/ut_mac
│ │ │ ├── tail -> ../../bin/busybox
│ │ │ ├── tee -> ../../bin/busybox
│ │ │ ├── telnet -> ../../bin/busybox
│ │ │ ├── test -> ../../bin/busybox
│ │ │ ├── time -> ../../bin/busybox
│ │ │ ├── timeout -> ../../bin/busybox
│ │ │ ├── tr -> ../../bin/busybox
│ │ │ ├── tty -> ../../bin/busybox
│ │ │ ├── uniq -> ../../bin/busybox
│ │ │ ├── unix2dos -> ../../bin/busybox
│ │ │ ├── unzip -> ../../bin/busybox
│ │ │ ├── uptime -> ../../bin/busybox
│ │ │ ├── uudecode -> ../../bin/busybox
│ │ │ ├── uuencode -> ../../bin/busybox
│ │ │ ├── wc -> ../../bin/busybox
│ │ │ ├── wget -> ../../bin/busybox
│ │ │ ├── which -> ../../bin/busybox
│ │ │ ├── who -> ../../bin/busybox
│ │ │ ├── whoami -> ../../bin/busybox
│ │ │ ├── xargs -> ../../bin/busybox
│ │ │ └── yes -> ../../bin/busybox
│ │ │ ├── libebt_802_3.so
│ │ │ ├── libebtable_broute.so
│ │ │ ├── libebtable_filter.so
│ │ │ ├── libebtable_nat.so
│ │ │ ├── libebt_among.so
│ │ │ ├── libebt_arpreply.so
│ │ │ ├── libebt_limit.so
│ │ │ ├── libebt_mark_m.so
│ │ │ ├── libebt_nflog.so
│ │ │ ├── libebt_pkttype.so
│ │ │ ├── libebt_redirect.so
│ │ │ ├── libebt_standard.so
│ │ │ ├── libelf-0.108.so
│ │ │ ├── libelf.so -> libelf.so.1
│ │ │ ├── libelf.so.1 -> libelf-0.108.so
│ │ │ ├── librt.so -> ../../lib32/librt.so.1
│ │ │ ├── libz.so -> libz.so.1
│ │ │ ├── libz.so.1 -> libz.so.1.2.3
│ │ │ ├── arp -> ../../bin/busybox
│ │ │ ├── chroot -> ../../bin/busybox
│ │ │ ├── flashcp -> ../../bin/busybox
│ │ │ ├── flash_erase -> ../../bin/busybox
│ │ │ ├── flash_eraseall -> ../../bin/busybox
│ │ │ ├── flash_lock -> ../../bin/busybox
│ │ │ ├── flash_unlock -> ../../bin/busybox
│ │ │ ├── inetd -> ../../bin/busybox
│ │ │ ├── telnetd -> ../../bin/busybox
│ │ │ └── udhcpd -> ../../bin/busybox
50 directories, 436 files
If attacker did not overwrite client certificates (there is a particion certs and backup od this certs) then there is a chance to upload fresh firmware, connect modem to CMTS and get fresh firmware from the vendor.