OpenWrt support for Cisco vEdge 100WM

Hello,

I have an old sd-wan router I want to try and install openwrt on.

The model is a vedge 100-wm and doing some browsing online, it seems to suggest it's running a cavium 7020 2 core processor.

I researched on openwrt, and it seems the closest device with that processor is the ITUS networks shield.

Am i going down the right path to try this firmware or am i completely out of luck?
how would i upgrade the firmware on a cisco router using CLI?

it may or may not boot, or you may discover it only has 4 mb flash and 32 mb ram, which isn't longer supported by openwrt.
even if it boots it'll probably not be 100% functional.

unknown, since it's an unsupported device.

Thanks for the response, the spec sheet suggest it has 4 Gb of NANA and 2GB of ram.

Is there any cisco router equivalent that support openwrt? hopefully the instructions are similar - i'm willing to brick this device if it doesn't work out so i don't mind taking the risks here.

it's probably Gbit, not Gbyte.

only cisco product afaik are 'meraki' but arguably they don't really qualify...

get serial and knock yourself out... if you are lucky at best you are probably looking at xmodem/kermit/jtagging a custom uboot... and that's just the beginning...

grafik

well, f-k me sideways ....

Yeah these devices are part of their Viptela SD-WAN lineup. When they acquired Viptela, they inherited their device lineup but quickly pivoted all development into their ISR series.

So i have this device that is pretty useless for me (requires a paid -expensive - monthly membership fee for the service), so i thought i can try to convert it to my home router using openwrt.

I have console access, I just have no idea where to start.

Post the boot log, and if possible, interrupt the boot loader and post the output from the help command.

1 Like

Does this help?

vedge# reboot
Are you sure you want to reboot? [yes,NO] yes
vedge# The system is going down for reboot NOW!
Stopping services...
ok: down: ephemeral: 0s, normally up
ok: down: getty-ttyS0: 0s, normally up
ok: down: logrotate: 0s, normally up
ok: down: watchdog: 1337s, normally up
ok: down: button: 1s, normally up
octeon_wdt: WDT device closed unexpectedly.  WDT will not stop!
ok: down: sysmgr: 0s, normally up
ok: down: syslogd: 1s, normally up
ok: down: klogd: 0s, normally up
Saving this session's debug logs...
Sending all processes the TERM signal...
Sending all processes the KILL signal...
Saving system clock time to hardware clock...
Saving system clock timestamp...
Unmounting file systems...
Freeing of pool 0 is missing 1 skbuffs
Warning: Freeing of pool 1 is missing 4 buffers
Restarting system.

OCTEON eMMC stage 1 bootloader
.......................................................................................................................................................................................................... Done.
Loaded OCTBOOT2BIN, size: 0x0000000000064980
Branching to stage 2 at: 0xFFFFFFFF81004000
N820 eMMC Stage

U-Boot 2013.07.948ddb7 (Build time: Apr 26 2016 - 09:36:18)

Warning: Board descriptor tuple not found in eeprom, using defaults
CUST_N820 board revision major:1, minor:0, serial #:
OCTEON CN7020-AAP pass 1.2, Core clock: 800 MHz, IO clock: 600 MHz, DDR clock: 667 MHz (1334 Mhz DDR)
Base DRAM address used by u-boot: 0x8f804000, size: 0x7fc000
DRAM: 2 GiB
Clearing DRAM...... done
Using default environment

MMC:   Octeon MMC/SD0: 1
Hit ctrl-x to stop booting 0
reading u-boot-octeon_n820.bin


U-Boot 2013.07-g1874683 (Build time: Dec 16 2016 - 23:07:45)

CUST_N820 board revision major:6, minor:5, serial #: 1781A4F2638183084
OCTEON CN7020-AAP pass 1.2, Core clock: 800 MHz, IO clock: 600 MHz, DDR clock: 667 MHz (1334 Mhz DDR)
Base DRAM address used by u-boot: 0x8f000000, size: 0x1000000
DRAM: 2 GiB
Clearing DRAM...... done
PCIe: Port 0 link active, 1 lanes, speed gen1
PCIe: Link timeout on port 1, probably the slot is empty
PCIe: Port 2 not in PCIe mode, skipping
Net:   octeth0, octeth1, octeth2, octeth3, octrgmii0
MMC:   Octeon MMC/SD0: 1
Type the command 'usb start' to scan for USB storage devices.

Hit ctrl-x to stop booting 0
Allocated 0x20000000 bytes at address: 0x30000000, name: almushtarika
22620582 bytes read in 7910 ms (2.7 MiB/s)
Bootloader: Done loading app on coremask: 0x2
22199120 bytes read in 5980 ms (3.5 MiB/s)
argv[2]: coremask=1
argv[3]: endbootargs
Allocating memory for ELF segment: addr: 0xffffffff80100000 (adjusted to: 0x100000), size 0x173b160
## Loading big-endian Linux kernel with entry point: 0xffffffff80847690 ...
Bootloader: Done loading app on coremask: 0x1
Starting cores:
 0x3
PP1:~CONSOLE-> UsiInnig tdiealviiczein tgr ecger
oup subsys cpuset
Initializing cgroup subsys cpu
Initializing cgroup subsys cpuacct
Linux version 3.10.62-ltsi (bamboo@build10) (gcc version 4.8.2 (GCC) ) #2 SMP PREEMPT Mon Dec 19 07:53:51 PST 2016
CVMSEG size: 2 cache lines (256 bytes)
Cavium Inc. SDK-3.1
bootconsole [early0] enabled
CPU revision is: 000d9602 (Cavium Octeon III)
FPU revision is: 00739600
Checking for the multiply/shift bug... no.
Checking for the daddiu bug... no.
Determined physical RAM map:
 memory: 000000000d400000 @ 0000000001a00000 (usable)
 memory: 0000000010000000 @ 0000000020000000 (usable)
 memory: 0000000038800000 @ 0000000050c00000 (usable)
 memory: 0000000000a05000 @ 0000000000100000 (usable)
 memory: 0000000000b2b000 @ 0000000000b05000 (usable after init)
No power GPIO device tree entry
Booting ...
Checking /dev/mmcblk0p2...
e2fsck 1.42.9 (28-Dec-2013)
boot: clean, 29/65536 files, 38432/262144 blocks
Mounting /dev/mmcblk0p2 at /boot
DRAM Size is 2048 M
Mounting /boot/active/rootfs.img at /rootfs.ro
Starting version 16.3.0...
Checking /dev/mmcblk0p3...
root: 211/169680 files (2.8% non-contiguous), 29539/677632 blocks
tune2fs 1.42.9 (28-Dec-2013)
Mounting /dev/mmcblk0p3 at /rootfs.rw
Mounting aufs at /rootfs
Mounting pseudo filesystems...
Setting up hotplug...
Mounting filesystems...
Setting hostname...
Configuring kernel parameters...
Configuring network interfaces...
Verifying current time against timestamp...
Starting services...
1 Like

And output when i interrupt bootloader

?           - alias for 'help'
askenv      - get environment variables from stdin
base        - print or set address offset
base64      - print or set address offset
bdinfo      - print Board Info structure
bootelf     - Boot from an ELF image in memory
bootm       - boot application image from memory
bootoct     - Boot from an Octeon Executive ELF image in memory
bootoctelf  - Boot a generic ELF image in memory. NOTE: This command does not
              support simple executive applications, use bootoct for those.
bootoctlinux- Boot from a linux ELF image in memory
bootp       - boot image via network using BOOTP/TFTP protocol
bootvx      - Boot vxWorks from an ELF image
bunzip      - uncompress a bzip2 compressed memory region
cdp         - Perform CDP network configuration
cmp         - memory compare
cmp64       - memory compare
coninfo     - print console devices and information
cp          - memory copy
cp64        - memory copy
cpld_rd     - cpld_rd 8 bit word from cpld
cpld_wr     - cpld_wr 8 bit word from cpld
crc32       - checksum calculation
date        - get/set/reset date & time
dhcp        - boot image via network using DHCP/TFTP protocol
dns         - lookup the IP of a hostname
echo        - echo args to console
editenv     - edit environment variable
eeprom      - EEPROM sub-system
env         - environment handling commands
exit        - exit script
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 /)
false       - do nothing, unsuccessfully
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
imxtract    - extract a part of a multi-image
inv_icache  - Invalidates the instruction cache
itest       - return true/false on integer compare
loadb       - load binary file over serial line (kermit mode)
loads       - load S-Record file over serial line
loady       - load binary file over serial line (ymodem mode)
loop        - infinite loop on address range
loop64      - infinite loop on address range
md          - memory display
md5sum      - compute MD5 message digest
md64        - memory display
mdio        - MDIO utility commands
meminfo     - display memory information
mii         - MII utility commands
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
nfs         - boot image via network using NFS protocol
nm          - memory modify (constant address)
nm64        - memory modify (constant address)
octbootbus  - print boot bus parameters
octreginfo  - print register information
pci         - list and access PCI Configuration Space
ping        - send ICMP ECHO_REQUEST to network host
printenv    - print environment variables
qlm         - Octeon QLM debug function (dangerous - remove from final product)
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
saves       - save S-Record file over serial line
setenv      - set environment variables
setexpr     - set environment variable as the result of eval expression
sf          - SPI flash sub-system
sha1sum     - compute SHA1 message digest
showvar     - print local hushshell variables
sleep       - delay execution for some time
source      - run script from memory
sspi        - SPI utility command
strings     - display strings
test        - minimal test like /bin/sh
tftp        - alias for tftpboot command (deprecated)
tftpboot    - boot image via network using TFTP protocol
tftpput     - TFTP put command, for uploading files to a server
tftpsrv     - act as a TFTP server and boot the first received file
time        - run commands and summarize execution time
tlv_eeprom  - EEPROM data parsing
true        - do nothing, successfully
unlzma      - uncompress a lzma compressed memory region
unzip       - unzip a memory region
usb         - USB sub-system
usbboot     - boot from USB device
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)
1 Like

thats promising... I take back my earlier comments...

try building and loading an Itus initramfs from usb/tftp or something...

1 Like

Thanks, now this is where I start getting into uncharted territories.

Do i simply go to the latest snapshot, download the Itus img and try t o load it i believe it's here

or do i need to build/compile it myself? (which may be a bit more complicated for me but i can give ite a shot following the development guides).

Alternatively, how can i test it without replacing the current firmware (is there a possibility of dualboot) or how can i save my current firmware if things go awry.

yeah... the initramfs... can be tested by booting from usb or tftp (if it works you may be able to use it to backup / restore your current os... )

you may wish to state your general location and see if any developers are interested...

if my memory doesn't fail me, use ....

setenv serverip=a.b.c.d to set the IP of your TFTP server host

setenv ipaddr=a.b.c.e to set the IP of this device - need to be in the same subnet, as server

tftpboot to transfer the image, should be a filename preset in uboot, rename initramfs file accordingly

bootm to boot the image transferred

if you don't do a saveenv, after you've changed the params, they'll be lost during reboot..

printenv in uboot will show all preset defaults.

1 Like

Thanks everyone,

i'm in Montreal Quebec, EST timezone.
Although I can setup the environment, i don't seem to have network connection - the lights don't even turn on leading me to believe that the ports are disabled when i interrupt the bootloader.

so i did,

setenv serverip 192.168.1.231
setenv ipaddr 192.168.1.230

I enabled the tftpserver on my host machine, name the file router.bin
on the client (router), I type tftpboot router.bin but i doesn't connect, i tried all the ports.

1 Like

Uboot doesn't have all network features, don't expect all nic functionality to work, like leds.

Make sure there's no fw blocking the TFTP calls.

And verify the parameters values don't need a = when set.

Ok, i turned off my firewall and tried again, still no go.

it seems to also cycle through the different interfaces so i let it run until it cycled through all of them;

=>tftpboot router.bin
Using octeth2 device
TFTP from server 192.168.1.231; our IP address is 192.168.1.230
Filename 'router.bin'.
Load address: 0x20000000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
Using octeth3 device
TFTP from server 192.168.1.231; our IP address is 192.168.1.230
Filename 'router.bin'.
Load address: 0x20000000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
Using octrgmii0 device
TFTP from server 192.168.1.231; our IP address is 192.168.1.230
Filename 'router.bin'.
Load address: 0x20000000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
Using octeth0 device
TFTP from server 192.168.1.231; our IP address is 192.168.1.230
Filename 'router.bin'.
Load address: 0x20000000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
Using octeth1 device
TFTP from server 192.168.1.231; our IP address is 192.168.1.230
Filename 'router.bin'.
Load address: 0x20000000
Loading: T T T T T T T T T T

I also tried the tftp request from a different machine to ensure the server is working;

c:\>tftp -i 192.168.1.231 get router.bin
Transfer successful: 17948592 bytes in 1 second(s), 17948592 bytes/s

Fire up wireshark or tcpdump, and check if you can see any incoming traffic on the device hosting the TFTPd.

You could also try the tftpsrv command, and send the image from your client.
If it fails, you can still explore the USB commands, nfs and load*.

EDIT: if there's a reset button, you could try using it, and watch the console.
if you're lucky, it'll start some kind of default recovery, whatever it might be.

I have acquired a vEdge 100b and a vEdge 1000. The vEdge 1000 is very interesting as it has a Quad Core CN6130 at 1GHz and 4GB ECC RAM in a SODIMM and 8 SFP ports. I have sent email to external-opensource-requests@cisco.com requesting the appropriate source code. Their Open Source page indicates that source for U-Boot 2013.07 and kernel 3.10.62 are included in the source provided.

2 Likes