Installation & Operating Guide


VFC1011:  10 port VOA based fiber-cut switch




































Text Box: Echola Systems L.L.C
1161 Ringwood Ct, Ste 100
San Jose, CA-95131                  
Phone: 408 321 9663
Fax: 408 321 9663







VFC1011 switch is a physical layer fiber cut switch which can also be used as a multi-port VOA (variable attenuator). It supports 10 VOAs that can be configured or monitored individually.


















Connecting test equipment to VFC1011


For example, if you want to simulate a fiber cut scenario between 2 optical devices using one fiber/one direction.


                                  Duplex Fiber


  Device1-RX ------------------------ç----------------------Device2-TX


Each LC connector of VFC1011 has two input/outputs marked as B and A.



Then you need to disconnect one of the fibers connecting these 2 devices and connect them through VFC1011 port, between A and B like the following:


  Device1-TX è [VFC1011-Port1BàVFC1011-Port1A] è Device2-RX



If you want to simulate a break between both TX and RX fibers of these devices under test (which may be the case in many scenarios) then you will have to use 2 ports of VFC1011, like the following


Device1-TX è [VFC1011-Port1BàVFC1011-Port1A] è Device2-RX


Device1-RX ç [VFC1011-Port2BßVFC1011-Port2A] çDevice2-TX


UPSR, 2F-BLSR protection ring testing may require 2 VFC1011 ports while 4F-BLSR might require 4 ports.  To test 100Gbps ethernet devices you will require total of 20 ports (2x VFC1011s) for 10 lanes in each direction. Similarly, for 40Gbps you will require 8 ports for 4 lanes in each direction.


Configuring VFC1011


VFC1011 provides a micro-USB console port and an Ethernet (10/100) port for management. USB console port is normally used in special situations such as to debug network connectivity if VFC1011 is not reachable through Ethernet.


If you use USB console port then you will need a USB-A to micro-USB cable. Use either putty (windows) or screen (Linux) or equivalent terminal login software. The settings for console port need to be 115200 baud rate with 8-N-1. Also make sure you are using correct COM port number (For instance, you can find out the correct COM port using Device Manager on Windows).


If you use Ethernet then you will have to configure the PC or Laptop's IP to match VFC1011's default network. The default network configuration is DHCP so you will see the IP address of the unit on OLED display if ethernet is connected a network.


Default Account settings


Login: admin

Password: admin


Login: osctl

Password: osctl


The default root password is "osctl", but be careful while using root, we recommend using "sudo" instead to gain root access.  Make sure to change the root password after the initial setup.


Configuring Static IP


Before configuring IP please make sure the date and time settings are correct. You can use Linux CLI 'timedatectl' or our GUI 'clock' page to set the time. If you use GUI you will have to uncheck NTP and set the date and time.

You can use "osctl" CLI to configure a static IP address after login as "root" user. "osctl -?" shows detailed osctl command options with examples.


# osctl -i -m -g


The above command configures IP address of VFC1011 as with mask and gateway & DNS as 192.168.1. Once the IP is configured from a PC or a Laptop using Ethernet or serial port, you can then connect VFC1011 to your network and access it using "telnet" or "ssh".


Configuring Dynamic IP


A DHCP server should be running on your network in order to configure dynamic ip. The DHCP client on the device then gets the ip from the server. 


# osctl -D


Make sure you know the assigned IP address to login using "telnet" or "ssh". 


Configuring Hostname


To change the hostname of VFC1011 switch use '-h' option.


# osctl -h VFC1011-SW-1


The above command changes the hostname of VFC1011 to VFC1011-SW-1.


Configuring DNS/Nameserver


To configure a DNS or Nameserver, use "-n" option of osctl.


# osctl -n


Configuring Syslog Server


To send system generated events to an external syslog server, use the "-S" option. You have to specify the address of the syslog server which will receive these event logs. (Note: this option only available in software version 2.0 and above).


# osctl -S


Version Info


The following command shows hardware and software versions and the serial number of the switch.


# osctl -V



Other Administrative commands


Most of the other administrative functions can be achieved using standard Debian Linux commands. For example, to change the password use the "passwd" command from the Linux prompt and to add new user use the "useradd" command. You have to be "root" user in order to add a new user.







To simply the operation, all functions are provided in a single command called "osctl". The osctl command provides 3 major functions


1.     Network & Host configuration (allowed only in "root")

2.     Switch Control & Status

3.     Port group Management



Network & Host configuration                                       



The following are the commands used to configure network.


1.     To configure static IP

         # osctl -i <ip> -m <mask> -g <gw>


2.     To use DHCP (dynamic IP)

         # osctl -D


3.     To configure hostname

         # osctl -h <hostname>


4.     To configure a DNS or Nameserver, use "-n" option

         # osctl -n <dns-server-ip>


5.     To configure syslog server to receive VFC1011's events

         # osctl -S <syslog-server-ip>


For details refer to installation section as these are explained in that section.


Switching Control                                       



In order to switch a particular port or ports or a group ON or OFF, you can use following command:


$ osctl -p {<port#/s> | <port-range> | <port-group>} <on|off> [-t <secs>]


Note that the "{}" (braces) groups options and "|" is equivalent to "or". If the options are in square brackets "[]" then it is optional. Wherever you see port# or in_port# they all the same and represents one of 8 ports of VFC1011.


For example:


         $ osctl -p 4 on

è switch port 4 to ON. LED on port 4 of VFC1011 lids when this command is issued which confirms that the port is switched ON.


         $ osctl -p "1 2 3" on

è switch ports 1, 2 and 3 to ON. Note the double quote, without that it won't work.


         $ osctl -p "1-4" off

è switch ports 1, 2, 3 and 4 to OFF (range 1 to 4). This comes in handy when you want to switch bunch of ports together.


         $ osctl -p gp1 off

è switch all ports in group "gp1" to OFF. You will have to create group before using it with "-c" option as explained in "Group Management" section.


         $ osctl -p 2 off -t 120

è switch port 2 to OFF after 120 (delayed switching)


         $ osctl -p 2 off -T 120  

è switch port 2 to OFF gradually within 120 milliseconds. This option is only available on VFC series switches. It is different from above delay where the switching happens almost immediately 120 secs of wait but in this case switching takes 120 milliseconds to come to completely OFF state to simulate real world fiber cuts. Default is 10 milliseconds.



Switch Status                                    



Th following command shows the status of a port or the status of ports in a pre-defined group, whether it is on/off.


       $ osctl -s [<port_group> | <in_port#>]

       $ osctl -A [<port_group> | <in_port#>]

       $ osctl -B [<port_group> | <in_port#>]


For example:

       $ osctl -s

è shows all ports' & groups' status as follows. It shows first all ports and tells you which ports are part of a group.


          All Ports Status


      Port      | Port Status


      1         |      off

      2         |      off

      3         |      off

      4         |      off

      5         |      on

      6         |      on

      7         |      on

      8         |      on


          Group Status


    Group Name | Port Status


          gp1          |      off



                   Group's Port Details


  GroupName: <gp1>

     Port Status: off

       Ports in the group: 1 2 3 4



          $ osctl -s gp1

è shows group "gp1" status only. You will have to create group before using it with "-c" option as explained in "Group Management" section.


          $ osctl -s 3

è shows port 3 status only


$ osctl -A 2

è displays port 2 attenuation in 1-256 range


$ osctl -B 4

è displays port 4 attenuation in dB





Port group Management                                       



Port group management commands provide the convenience of switching many ports together identified by a name. The group name can be any alpha-numeric name but cannot be a number alone or start with a number. For example, group name cannot be "10" or 10gp1.


1.     To create a new group

           $ osctl -c <port-group> {<in-port#/s> | <inport-range>}

2.     To update existing group

         $ osctl -u <port-group> {-a | -r <in-port#/s>}

3.     To delete a group

            $ osctl -d <port-group>

4.     To delete all groups

          $ osctl -R

5.     To list ports in a group

            $ osctl -l [<port-group> | <in-port#>]


For example:


$ osctl -c gp1 "1 3 4"

è creates group named "gp1" with ports 1,3 and 4. The double quotes around space separated port numbers are required. Note that when you create a group, all the ports in the gp1 will be in OFF state by default.


$ osctl -c gp2 "5-8"

è creates group named "gp2" with ports 5,6,7 and 8 (5 to 8 range)


$ osctl -u gp1 -a "5 6"

è adds ports 5 & 6 to existing group gp1


$ osctl -u gp1 -a 7

è adds port 7 to existing group gp1


$ osctl -u gp1 -r "2 4"

è removes ports 2 & 4 from group gp1


$ osctl -d gp1

è deletes group gp1 and release all ports which were part of the group.





$ osctl -l

è lists ports in group, like

    GroupName: <gp1>

      Ports in the group: 1 2 3 4


$ osctl -R

è delete all groups in the database.



Setting Attenuation (VFC series only)


-A option


The "-A" option is used to set the attenuation of any particular output port or group to fraction of input power. It takes a number from 1 to 256 as a divisor. It attenuates the power output of the port by that number. The more the divisor, the more the attenuation is (256 is fully off & 1 is on). 


The attenuation setting is nonlinear. So, if you set the attenuation to 128, it doesn't mean you are setting the attenuation to half of the source power. Please refer to the graph at the end of the manual which shows the relationship between applied voltage and the attenuation. The applied voltage is linear but the VOA response is nonlinear. Currently, the attenuation setting is not saved, once you reset or reboot the switch attenuation setting is lost; you will have to configure it again.


$ osctl   -A {<port_group> | <in_port#>} [ <divisor [1-256]> | [<divisor range [1-256]>   -T <msec>]]


For example:


       $ osctl -A 1 128

            -> set attenuation of port#1 to 128 (256 is fully off & 1 is on)


       $ osctl -A 1

            -> displays current attenuation of port#1


       $ osctl -A gp1 64

            -> set the attenuation of all ports in the group gp1 to 64


       $ osctl -A 3-8 32

            -> set the attenuation of ports 3,4,5,6,7 & 8 to 32


       $ osctl -A 1 100-160 -T 5000 (requires sw.  ver 3.0 and above) 

            -> set attenuation of port#1 to 100 first and ramp up to 160 in 5000 milliseconds period. This is useful for creating packet errors as opposed to full fiber-cut scenario.



       $ osctl -A 1 160-100 -T 5000 (requires sw.  ver 3.0 and above) 

            -> set attenuation of port#1 to 160 first and ramp down to 100 in 5000 milliseconds period.


The osctl version 5.3 and above includes a default calibration setting, which allows you to set attenuation in dB but it may not be accurate. You need to calibrate all VOAs to get better accuracy. Please refer to calibration section in this document for the details.


-B option


The -B option is used to set the attenuation in dB.


            $ osctl -B {<port-group> | <in-port#>} [ <dB [1-25]>]




$ osctl -B 1 5

            à set attenuation of port#1 to 5 dB


$ osctl -B 1

            àdisplays current attenuation of port#1




Web Interface


In order to access the VFC1011 Web interface just enter its IP address on URL address bar of the web browser. 


Following screen shot shows how the Web interface for VFC1011 looks like…



Secured HTTP (HTTPS) Setup

The Web interface for the Echola device is not secured by default as the browser doesn’t trust the device’s SSL self-signed certificate. Keeping your connection secure prevents cybercriminals from stealing sensitive data, such as your login credentials. To establish a secured HTTP connection to the Echola device, follow the following steps.

Step (1): Save the Certificate from the Echola device to your Windows PC using Chrome Browser

 (a) Click on the “Not Secure” Browser’s URL tab

 (b) Click on “Certificate not valid” from the pulldown menu

 (c) Select the “Details” tab

 (d) Click on the “Export” button to save the certificate to a local file.

Step (2): Import Saved Certificate to make it a trusted certificate by the Chrome browser

 (a) Select Chrome’s Settings-> Security-> Manage Certificates

 (b) Select “Trusted Root Certification Authorities” from the top tabs of “Managed Certificates.”

 (c) Click on the “Import” button to import the saved certificate

Step (3): Add following line to the file C:\Windows\System32\drivers\etc\hosts echola.sys

After saving the hosts file, point your browser to https://echola.sys, and you should be able to establish a secured (HTTPS) connection to Echola device. Though the above steps are meant for Windows 11/Chrome, similar steps work for other OSs and Browsers.

Custom Self-signed Certificate

To create your custom self-signed certificate, you can run a helper script “” from the Echola device command line. This way, you can use the Echola device IP address or a domain name of your choice. You must follow the first two steps to use an IP address as your common name. If you select a domain name, follow all three steps above to reinstall the certificate on your Windows system.

Control page


The default page for the Web Application is the 'Set Attenuation' page. If you set it to the lowest attenuation then the switch is fully 'ON', similarly the highest attenuation sets it to 'OFF'. You can also set the attenuation in increments of 1 dB using the slider or 1/10th of a dB using the text input box. Each port must be calibrated to get the required accuracy you want. The calibration is a little laborious but it is a one-time task done at the time of deployment. There is a web page under maintenance which helps to make this calibration easier. 


Setup page


The setup page allows you to change Hostname, Static IP address configuration and Dynamic IP (DHCP). Initially it shows the current set values. You can change them by clicking on the corresponding field. Note that changing the IP, Gateway, Mask or DHCP setting will make the switch reboot!

Device Info page


Device Info page shows hardware and software information such as model and version.

Maintenance page


This page can be used to "Reset/Reboot" the system or calibrate the VOA. The calibration of the VOA requires a laser source and an optical meter. Please contact for calibration details.


VOA Attenuation vs Drive Voltage graph


The VOA drive voltage is 0-5V and the hardware is capable of 256 steps resolution. You can see from the below graph that they are not linear and varies between each VOAs




VOA In-house Calibration



Please note the accuracy of the calibration depends on quality of laser source/reference, optical power meter and fiber connecters/coupling/adapter that you use in the calibration setup. Also try to use wavelength and CW/modulation settings of the laser source close to that of production.


Each port has to be calibrated individually. The above diagram shows the setup for one port, you will have to repeat the same calibration procedure for all 10 ports. Laser source can be of either 1310nm or a 1510nm wavelength or even tunable laser depending on production requirement.


You will need a PC or a Laptop or a Tablet right in front of the setup to run the calibration web application from the device web page (under Maintenance tab select Calibration). This web page allows to change attenuation in real time. There are 26 values in total that need to be entered to complete each port's calibration. The other values will be interpolated by the software to fill in the whole 0 to 255 range.





Automating Echola's Optical Switches

Using RESTful API


Our REST APIs accept JSON request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication (basic), and verbs (GET and PUT only). The following table summarizes the available APIs.






Request (body) data



Retrieve all ports state




Retrieve specific port's state




Switch On | Off a specific port

{"state":<on | off>}



Retrieve all ports attenuation




Retrieve specific port's attenuation




Set attenuation of a specific port




Retrieve all ports attenuation in dB




Retrieve specific port attenuation in dB




Set attenuation of a specific port in dB





1.                 The following example shows how the attenuation of port 1 can be set using a 'curl' command line script. Please note, it is not a good practice to use password on command line directly as shown below. Alternatively, you could use curl with --netrc-file option and protect the password file with the appropriate permissions.


curl -X PUT \

    -u admin:admin \

    -H "Content-Type: application/json" \

    -d '{"attenuation": "159"}' \



2.                 Following command returns the state of the port 2 (whether it is ON or OFF)


curl -u admin:admin \

       -H "Content-Type: application/json" \



responds with





3.                 Following command returns the attenuation of port 1


curl -u admin:admin \

       -H "Content-Type: application/json" \



responds with





4.                 Following command switches port 2 to OFF



curl -u admin:admin -X PUT \

        -H "Content-Type: application/json" \

        -d '{"state": "off"}' \



5.                 Following command sets, the attenuation of port 1 with an endpoint which accepts input in dB


curl -X PUT \

    -u admin:admin \

    -H "Content-Type: application/json" \

    -d '{"attenuation": "10"}' \



Using osctl CLI


VFC1011 configuration or monitoring can be automated using osctl command available on the switch using an external terminal automation tools such as Tcl/Expect. Unlike RESTful API which supports limited configurations, the osctl command supports all configurations including network.


Running scripts from Unix/Linux systems


If you want to run the script from a Unix/Linux based machines then there is possibility that you may have these tools on your system. Check if it's already been installed by typing "expect" from the Unix/Linux prompt. If it is not installed then you will have to install it using package install tool for that particular flavor of Unix/Linux. For instance, on Fedora core Linux, you can use "yum install tcl expect" to install Tcl and Expect.


Running scripts from Windows


For Windows based systems you can install the Windows free community version of ActiveTcl from Activestate then make sure to install "expect" using the command "teacup install Expect".

Also, you need to enable "telnet" client on Windows before running any scripts. To enable telnet on Windows follow these steps


1.     Start

2.     Control Panel

3.     Programs and Features

4.     Turn Windows features on or off

5.     Check Telnet Client Hit OK


After that you can start Telnet via Command Prompt to check if it works.


The following sample script logs into VFC1011/VFC1011 switch and issue a switch command then check whether the switch command was successful and return the result before terminating the telnet session. This script takes an argument (port number and state of the port (on/off)) from the command line argument. Cut and Paste the following script on to any editor and save as "rosctl". Then you can run the script by issuing rosctl -p <port#> on|off.  For instance, to switch port 2 to ON, you can call the script as rosctl -p 2 on. Make sure you have a proper path set for Expect on first line "#!/usr/bin/expect" for Unix/Linux based systems. For Windows, you will have to uncomment 'exec' and 'package' commands as mentioned in the script. All comments inside '#' provide more info on what the script is doing.


Sample Tcl/Expect script Using 'osctl' CLI




# This script switches the given port and verifies if the port is switched from a remote machine

#             Command Usage: rosctl -p <port#> on|off


# For windows uncomment following

#    exec tclsh "$0" ${1+"$@"}

#    package require Expect


# Check number of arguments passed to this command if < 3 then spit out error & exit


      if { $argc < 3 } {

              puts "Usage: rosctl -p <port#> on|off\n"

              exit 1



# Set telnet host, username, password and other parameters, modify these to reflect your setup


      set hostname "" 

      set username "osctl"

      set password "osctl"

      set prompt "osctl@.*\$"

      set port [lindex $argv 1]

      set status [lindex $argv 2]

      set commandcontrol "osctl -p $port $status"

      set commandstatus "osctl -s $port"


# Display info.


      puts "Connecting to $hostname."


# Connect to the telnet server using the "spawn" command.


      spawn telnet $hostname

      #spawn C:\Putty\putty.exe -telnet $hostname



# Wait for a login prompt.


      expect -re "(Name|login|Login|Username).*:.*" {


          # Login prompt received. Send user name to VFC1011/VFC1011.


          send "$username\r"


      } eof {


          # No login prompt received. Display an error.


          puts "could not connect\n"



# Wait for a password prompt from the Unix server.


      expect "Password:" {


          # Password prompt received. Send the password.


          send "$password\r"



# Wait for the switch prompt.


      expect -re $prompt {


          # Issue osctl command to switch given port


          send "$commandcontrol\r"



# Wait for the switch prompt again to check status.


      expect -re $prompt {


          # Issue osctl command to check status


          send "$commandstatus\r"



# Discard echoed command - we need only the status


      expect "$commandstatus\r"


# Discard unwanted prompt as well


      expect -re "(.*)$prompt"



      #puts "\nGOT*****$expect_out(buffer)***************\n"

      #puts "\n GOTS ####$expect_out(1,string)#####\n"


# Save remaining to buffer 'data'


      set data $expect_out(1,string)


# Check return status and display result accordingly

      switch -re $data {

         "off" { puts "Port $port is OFF" }

  "on"  { puts "Port $port is ON" }

 default { puts "Port $port status is unknown" }



# Terminate telnet


send "exit\r"


Hardware Specifications



Input Power

100-240 AC

Total Power Consumption

< 7 Watts

Serial Port

1x micro-USB


1x 10/100 Ethernet

Optical Specification for FC Series


10 duplex LC connectors

Data rate

Any data rate - Physical Layer Switch, no limitation

Wavelength (nm)

Multi-mode version:

   850/1310 nm

Single-mode version:

  1280-1625 nm

Optical Technology


Insertion Loss (dB)

0.5 Typical, 0.8 Max. (without connectors)

Switching Time (ms)

≤ 10

Crosstalk (dB)

≤ -80

Repeatability (dB)

≤ 0.1

Optical Specification for VFC Series (SM)


10 duplex LC connectors

Data rate

Any data rate - Physical Layer Switch, no limitation


OLED (1 inch)

Wavelength (nm)

1310±50nm  & 1550±50nm

Optical Technology


Insertion Loss (dB)

< 0.8 dB (without connectors)

Switching Time (ms)

≤ 5

Crosstalk (dB)

≥ 65

Attenuation Dynamic Range (dB)

> 30

Attenuation Resolution (steps)

256 steps

Optical Power Handling (mW)

≤ 250mW/channel


Operating Temperature (ºC)

-5 ~ +75

Storage Temperature (ºC)

-40 ~ +85

Relative Humidity Range (%)

 0 ~ 85





General Software Info




è This device runs Debian distribution of the Linux OS. Most of the Debian tools can be used as is for debugging purpose.


è All the group information is stored in a hidden XML database file. If for some reason this file is corrupt, the system will recover from this error by trying to copy the backup database file. If this happens it will throw a warning message but it is not guaranteed that all the group information will be restored correctly. In that case you may need to recreate missing groups.


è For adding additional users, you can use Linux's "useradd" command. You have to be "root" in order to add new user to the system.





è   Contact Info



If you have any technical questions and need help you can send email to You can also download latest documents and software from our website