VFC Series fiber-cut switches are VOA (Variable Optical Attenuator) based optical switches which can also be used as a multi-channel VOA in DWDM applications. It supports up to twenty VOAs in one compact enclosure (1U, 5 inches deep) that can be configured or monitored individually. Even though the examples shown in this guide use the VFC1011-SM 10 port model, the software is the same for all models.






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 two 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 two 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 need four ports.  To test 100Gbps ethernet devices, you will require a total of 20 ports (2x VFC1011s) for ten lanes in each direction. Similarly, for 40Gbps, you will need eight ports for four 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 generally 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 the console port need to be 115200 baud rate with 8-N-1. Also, make sure you are using the correct COM port number (For instance, you can find the correct COM port using Device Manager on Windows).


If you use Ethernet, 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 to 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. Also, make sure to change the root password after the initial setup.


Configuring Static IP


Use "osctl" command 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 the 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 log in 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. In addition, you have to specify the address of the Syslog server which will receive these event logs. (Note: this option is 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 a new user use the "useradd" command. You have to be a "root" user to add a new user.







To simply the operation, all functions are provided in a single command called "osctl." The osctl command provides three primary 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 alone

         # 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 the 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 are all the same and represent 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 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 a 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 secs (delayed switching)


         $ osctl -p 2 off -T 120  

è switch port 2 to OFF gradually within 120 milliseconds. This option is only available with VFC series switch. It is different from the above delay, where the switching happens almost immediately after 120 secs of a wait, but switching takes 120 milliseconds to come to a completely OFF state to simulate real-world fiber cuts. Default is ten milliseconds.



Switch Status                                    



The following command shows the status of a port or 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 alphanumeric name but cannot be a number alone or start with a number. For example, the 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 make a group, all the ports in the gp1 will be in the OFF state by default.


$ osctl -c gp2 "5-8"

è creates a 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 a fraction of input power. It takes a number from 1 to 256 as a divisor. Then, 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 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 the attenuation of port#1 to 100 first and ramp-up to 160 in 5000 milliseconds period. This option helps create packet errors as opposed to the clean fiber-cut scenario.



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

            -> set the 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. Therefore, you need to calibrate all VOAs to get better accuracy. Please refer to the 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


To access the VFC1011 Web interface, just enter its IP address on the URL address bar of the web browser. 


The following screenshot shows how the Web interface for VFC1011 looks like…



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 complete 'ON'. Similarly, the highest attenuation sets it to 'OFF'. Using the text input box, you can also set the attenuation in increments of 1 dB using the slider or 1/10th of a dB. 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. Then, 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


The 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 get in touch with 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 the quality of the laser source/reference, optical power meter, and fiber connectors/coupling/adapter that you use in the calibration setup. Also, try to use wavelength and CW/modulation settings of the laser source close to production.


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


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 changing 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 use 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 the password on the command line directly, as shown below. Alternatively, you could use curl's netrc option "-n <user_password_file>" instead of "-u" 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 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 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 machine, then there is a possibility that you may have these tools on your system. First, check if it's already been installed by typing "expect" from the Unix/Linux prompt. If it is not installed, you will have to install it using the 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 the "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, issues a switch command, checks whether the switch command was successful, and returns 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 onto 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 rosctl -p 2 on". Make sure you have a proper path set for Expect on the first line "#!/usr/bin/expect" for Unix/Linux-based systems. For Windows, you will have to uncomment 'exec' and 'package' commands, as the script mentions. 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 the Debian distribution of the Linux OS. Most of the Debian tools can be used as-is for debugging purposes.


è All the group information is stored in a hidden XML database file. If 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" to add a new user to the system.





è   Contact Info



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