To view the documentation for your version of PicOS™, select your version from the drop down menu below.

PicOS™ Version:
Title Version Download

General questions

What is PicOS™?

PicOS™ is the new name for Pica8’s operating system (OS). PicOS™ includes a Layer-2 / Layer-3 switching mode (L2/L3 Mode) and has support for OpenFlow through Open vSwitch (OVS) which we call OVS Model. OVS runs as a process on our Debian Linux distribution. We focus on quality, scalability, and stability of PicOS™ implementations. And XORPlus, the former name for PicOS™, is the extension of XORP, an eXtensible Open Router Platform.

What is OpenFlow?

OpenFlow was proposed as a standard for researchers to run and evaluate experimental protocols in heterogeneous
network devices (e.g. switches, routers, and access points) to enable innovation in campus networks.

OpenFlow is added as a feature to commercial Ethernet switches, routers and wireless access points – and provides a standardized hook to allow researchers to run experiments, without requiring vendors to expose the internal workings of their network devices. OpenFlow is currently being implemented by major vendors, with OpenFlow-enabled switches now commercially available.

Please refer to for more information

What is OVS?

OVS stands for Open vSwitch, which is a multilayer software switch developed by Nicira now governed by this community

Open vSwitch is well suited to function as a virtual switch in VM environments. In addition to exposing standard control and visibility

interfaces to the virtual networking layer, it was designed to support distribution across multiple physical servers. Open vSwitch supports

multiple Linux-based virtualization technologies including Xen/XenServer, KVM, and VirtualBox. It is ported to Pica8® Series.

Layer-2/Layer-3 mode

Where do I start L2/L3?

Please refer to L2/L3 Configuration Guide for how to configure L2/L3.

How do I drop into Linux Shell from L2/L3 CLI?

There are two ways to drop into Linux shell

  1. Telnet to the switch, and log in with “root” account
  2. If you have already logged into CLI, use “start shell sh “, and then give the root password to drop into Linux shell. Use “exit” to return to CLI after you are done with shell.
XorPlus> start shell sh
Input password:
$ pwd

How do I set the IP address to Management port in L2/L3 mode?

In L2/L3 mode, DHCP is enabled on Management port by default. Please follow the below steps to set management port’s IP address:

1. Enter Pica8′s ‘configuration mode’

XorPlus> configure
Entering configuration mode.
There are no other users in configuration mode.

2. It deactivates DHCP automatically after setting the static IP address on eth0
XorPlus# set interface management-ethernet eth0 address

3. It is an option to set gateway
XorPlus# set interface management-ethernet eth0 gateway

4. Commit the configuration
XorPlus# commit
Waiting for merging configuration.
Commit OK.
Save done.

Why do I lose my last configuration after rebooting?

It is highly possible that you do not save the running configuration to startup by issuing “save running-to-startup” after configuring Pica8® switch. You may be able to recover it by issuing “load /pica/config/pica.conf”. Please save it to startup if the recovery successes.

Why do I lose the entire configuration after upgrating PicOS™ image?

It could be caused by the incompatibility between the old configuration file and the newly upgraded image. Please forward the old configuration file (/pica/config/pica_startup.boot) and the log file (/tmp/log/messages), and the version number of the new image.

OVS mode

Where do I start OVS?

OVS Configuration:

Please refer to OVS Configuration Guide for how to configure OVS.

OVS Starter Kit:

Please refer to OVS Starter Kit (1/3) for the first of the series of OVS Starter Kit. Please send an email to for the rest two.

What is the max number of flow entries that can be installed on the 1G and 10G switches?

The max number of the flow entries in a switch is defined by the TCAM size of the ASIC of the switch. Please refer to for the ASICs supported by PicOS.

Where is vswitch.ovsschema in PicOS™ 2.0?

In PicOS™ 2.0, vswitch.ovsschema has been moved from /ovs/bin/ directory to /ovs/share/openvswitch/ directory.

How to enable Spanning Tree Protocol in a Bridge?

By default, Spanning Tree Protocol (STP) is disabled when the bridge is created. The following example shows how to enable STP and set bridge priority:

root@PicOS-OVS#ovs−vsctl –db=tcp: set Bridge br0 stp_enable=true other_config:stp-priority=0x4096

How to access the switch via inband ports?

By default, you can access the switch from the outband port only. Add the following flows to the bridge, e.g. br0 with MAC addres c8:0a:a9:04:49:19, in order to access the switch from the inband ports.

root@PicOS-OVS#ovs-ofctl add-flow br0 priority=65300,in_port=local,dl_src=c8:0a:a9:04:49:19,actions=all

root@PicOS-OVS#ovs-ofctl add-flow br0 priority=65300,dl_dst=c8:0a:a9:04:49:19,actions=local

root@PicOS-OVS#ovs-ofctl add-flow br0 priority=65300,dl_dst=FF:FF:FF:FF:FF:FF,actions=all,local

What will Pica8® do after connecting to Controller?

Pica8® will remove all flow entries in its flow table after connecting to Controller.

What will happen if Pica8® loses its connection to Controller?

By default, Pica8® will remove the flow entries in its flow table after disconnecting from the Controller and start to function as a MAC-Learning switch. It can be configured to keep the existing flow entries even if disconnect from the Controller by setting the fail-mode to secure:

root@PicOS-OVS#ovs-vsctl –db=tcp: set bridge br0 fail-mode=secure

If the bridge’s fail-mode is secure, Pica8® will discard the incoming packets in the period of reboot and connection to Controller because the flow table is empty then.

Popular references

Quick Start Guide of Pica8®

This Quick-Start guide applies to Pica8® pre-loaded switches. The first step is to unpack the package that you have received.

Switch usage

How do I access the console port?

All Pica8® switches come with a serial console and at least one Ethernet management port. Both serial port and Ethernet port use RJ45 connectors, so you need to pay attention to the fine print on the ports to tell which one is serial port (“Con”) and which is Ethernet management port (“Eth”).

The pin-out of the Pica8® management ports is exactly the same as the Cisco’s. The easiest way to access the serial port is to use an RJ-45 to nine-pin (RS-232 or DB9) female cable. The RJ-45 plugs into the female RJ-45 consol port on the switch. The RS-232/DB9 connects directly to a standard PC type serial port.

You can buy this type of cable at Amazon with less than $10. If you want to challenge yourself with a little DIY fun, you can check out Cisco ‘s site. It has a very long user guide, which seems unnecessarily complicated, on cabling for the console and aux port. You can also find a slightly less complicated help guide (DB9F to RJ45F, where F=Female) on the web.


Connection Settings of the serial port.

  • speed: 115200
  • data bits: 8
  • stop bits: 1
  • parity bits: 0
  • flow control: none (or xon/xoff)


  1. Use a serial to Ethernet cable (i.e. a RS232 serial connector on one end and RJ45 connector on the other)
  2. Connect the RJ45 cable to the port on the Pica8® switch which says “Con” (as shown in the photo).
  3. From the host, connect to the terminal at a baud rate of 115200: $screen /dev/ttyS0 115200
  4. If the output is garbled, restart your computer with the serial console cable plugged.

How to Change the Baudrate

The baudrate is default to 115200, but some users prefer other baudrate. In that case, you can change the baudrate at uBoot. Here is the steps to change the baudrate.

  1. Get a PC supporting baudrate at 115,200 and connect to the console port.
  2. Get access to the console port.
  3. Reboot the switch and interrupt the uBoot process by hitting enter.
  4. For example, let’s say you want to set baudrate to 9600. In uBoot prompt, enter “setenv baudrate 9600″, and then “saveenv”. You also need to set baudrate in /etc/inittab.
  5. Reboot the switch, and now change your host baudrate to 9600.

What SFP, SFP+ and QSFP+ modules do you support?

Optical Module of Pica8®:


  • Pica8® P-SFP-1G-SX
  • Pica8® P-SFP-1G-LX


  • Pica8® P-SFP-10G-SR (10G MMF 850nm)
  • Pica8® P-SFP-10G-LR (10G SMF 1310nm)


  • Pica8® P-QSFP-40G-SR4 (40G 850nm)

Pica8® supports any off-the-shelf SFP, SFP+ and QSFP+ modules, as long as they are compatible to the standard. In our Lab, we have tested the following products:


  • Finisar FCLF8521P2BTL
  • Finisar FTRJ8519p1BNL
  • Finisar FCMJ-8521-3
  • Cisco 1000 BASE-SX
  • JDS Uniphase JSM-12L0AA1
  • JDS Uniphase JSM-12S0AA1
  • Optech OP6C-TX1-00-C2


  • Finisar FTLX8571 (SR)
  • Finisar FTLX1471 (LR)


  • Finisar FTL410QE1C (100m)
  • Finisar FTL4C1QEC (10km)

Can SFP+ ports be configured to support SFP optics?

Yes, in OVS Mode, an SFP+ port can be configured to work in SFP mode using the following command:

ovs-vsctl –db=tcp:
add-port br0 te-1/1/1 — set Interface
te-1/1/1 type=pica8 options: link_speed=1G

And in L2/L3 Mode, the port can be configured to work in SFP mode using the following command:

set interface gigabit-ethernet te-1/1/49 speed 1000

How do I configure QSFP+ ports as 4x10G SFP+ ports?

On P-3920, use the following command:

set interface qe-interface-mode SFP
save running-to-startup
run request system reboot

Where can I find the latest Pica8® image?

What storage device can I use on Pica8® to store files?

Pica8® 3290, 3295, and 3780 support Compact Flash (CF) card and 3920 supports Digital Secure (SD) card as storage. The CF/SD card is installed inside the switch box. You will need to open the box in order to physically access the card.

You can use a Linux command to check the CF/SD device.

For P-3290, P-3295, and P-3780:
# fdisk -l
Disk /dev/hda: 519 MB, 519192576 bytes
255 heads, 63 sectors/track, 63 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 63 506016 83 Linux

For P-3920:
# fdisk -l
Disk /dev/mmcblk0: 1980 MB, 1980760064 bytes
4 heads, 16 sectors/track, 60448 cylinders, total 3868672 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/mmcblk0p1 16 3868671 1934328 83 Linux

What is the default user name/password?

By default, PicOS™ enables users root/admin/operator.

  • “admin/operator” will automatically log into L2/L3 CLI;
  • “root” will automatically drop into Linux shell;

The passwords of all three accounts are ‘pica8′.

You SHOULD change the passwords if you use it in a production environment or through the Internet.

You can use “# passwd some_user” command to change the password of some_user in the Linux shell.

How do I upgrade the image?

It is always a good practice to save a copy of the configuration before upgrading PicOS™ image. Please refer to Image Upgrade Guide for details how to upgrade the PicOS™ image on Pica8® switches.

How to set the physical interface speed?

By default, the speed of the physical interface is set to auto-negotiate. In current supported versions, Auto-MDIX (automatically choosing the MDI or MDIX configuration to properly match the other end of the link) feature is deactivated if the interface is not in auto-negotiate mode.

L2/L3 Mode:

In L2/L3 mode, you can set it to auto or lower speed than the full speed:

  • 1G: auto, 100M, 10M
  • 10G: auto, 1G, 100M, 10M
  • 40G: auto, 10G, 1G, 100M, 10M

OVS Mode:

In OVS mode, you can set the speed up to the full speed. But the full speed configuration works only if you set the other end to the full speed too. Here are the examples to set P-3290 interfaces from 10M to 10G and auto:

#ovs-vsctl –db=tcp: add-port br0 ge-1/1/1 — set interface ge-1/1/1 type=pica8 options:link_speed=auto
#ovs-vsctl –db=tcp: add-port br0 te-1/1/49 — set interface te-1/1/49 type=pica8 options:link_speed=10M
#ovs-vsctl –db=tcp: add-port br0 te-1/1/50 — set interface te-1/1/50 type=pica8 options:link_speed=100M
#ovs-vsctl –db=tcp: add-port br0 te-1/1/51 — set interface te-1/1/51 type=pica8 options:link_speed=1G
#ovs-vsctl –db=tcp: add-port br0 te-1/1/52 — set interface te-1/1/52 type=pica8 options:link_speed=10G

What are the OpenFlow versions PicOS™ supports?

OpenFlow versions:

In today’s general available version (1.6.1), the L2/L3 (hybrid of OpenFlow and traditional switch funcions) supports OF 1.0 only and OVS supports both OF 1.0 and 1.2.

Enforce OVS to OF 1.0:

By default, OVS will negotiate with Controller which OpenFlow version (1.2 or 1.0) to use. You can enforce it to OF 1.0 by setting the protocols to OF 1.0:

ovs-vsctl –db=tcp: add-br br1 — set bridge br1 datapath_type=pica8 protocols=OpenFlow10


I suspect the hardware is broken. How do I trouble shoot?

Hardware Trouble Shooting Guide

In rare cases, we received users’ inquiries about hardware troubleshooting. For example, a user upgraded the image of one of his switches and could not get the switch to “function”. When this happens, we would walk him through the following steps to troubleshoot the problem.

Step 1 – connect to the console port of the switch. Let’s assume you use HyperTerminal to control the console port of your PC.

Step 2 – Turn off your switch.

Step 3 – Go to “Transfer” of HyperTerminal, select “Capture Text”.

Step 4 – Turn on your switch. You should see text output on your HyperTerminal screen. If you don’t see any output, you should check your console setting again.

Step 5 – Check on the console whether the switch boots into Linux. If it stops at uBoot (which is the boot loader), do “printenv” to print out the environment variables.

Step 6 – If boot into Linux, start XORPlus. Do “show version”.

Step 7 – Go to “Transfer” of HyperTerminal, stop “Capture Text”

At the back or the side of the switch, find a small tag. Write down the serial number and product information. Send those data and the captured text to We will help you to determine whether it is a configuration problem, hardware problem, or software problem.

I get “Bad Magic Number” after I upgrade the image. What do I do?

Bad Magic Number after uBoot Upgrade

There are several possible causes of “bad magic number” when you reboot your switch after the image upgrade.

“Bad magic number” basically means the image you try to load fails the checksum. This could be caused by uBOOT trying to load the wrong image, or the image itself is not upgraded completely.

The most common root cause is the wrong setting of uBOOT. If you have changed the uBOOT parameters, please double check the setting. For example, if you forgot to do “saveenv” before you reboot the system, your uBOOT settings might fall back to the old settings after power cycle. This will often causes the “bad magic number” issue.

If you check all uBOOT settings and the problem is still persistent. You will need to reinstall the Compact Flash image. Please follow the upgrade procedure in this attached document