- Bring up drivers. USB Function driver bring-up is only required if you support USB Function mode. If you previously implemented a USB Function driver for a USB micro-B connector, describe the appropriate connectors as USB Type-C in the ACPI tables for the USB Function driver to continue working.
- You need to update the driver. For WIn10, install the setup (x64).exe from the Ciscousbconsoledriver31.zip. Check that the Cisco Serial (Comx) is using the correct driver provider which should be Cisco. Don't use the Cypress driver.
- A USB device driver must be installed the first time a Microsoft Windows-based PC is connected to the USB console port on the switch. Installing the Cisco Microsoft Windows XP USB Driver Installing the Cisco Microsoft Windows 2000 USB Driver Installing the Cisco Microsoft Windows Vista and Windows 7 USB Driver.
- Virtual COM port (VCP) drivers cause the USB device to appear as an additional COM port available to the PC. Application software can access the USB device in the same way as it would access a standard COM port.
- Cisco Port Devices Driver Windows 10
- Cisco Port Devices Driver
- Cisco Wireless Drivers Download
- Cisco Port Devices Drivers
- Cisco Device Lookup
- Cisco Devices List
Installing the Cisco Microsoft Windows USB Device Driver A USB device driver must be installed the first time a Microsoft Windows-based PC is connected to the USB console port on the switch. Installing the Cisco Microsoft Windows XP USB Driver Installing the Cisco Microsoft Windows 2000 USB Driver.
When it comes to connecting to a network device, SSH is the industry standard. This is no surprise: the old protocol, telnet, allows only not secure remote management. Instead, SSH stands for Secure Shell for a reason: it is really secure, implementing all the modern security features. Thus, we can't make SDN software without implementing SSH. In this Python SSH Tutorial, we are going to explain how to use SSH in a Python program to connect and control remote devices.
In this article we explain how to do things the right way. In a hurry? Just scroll down for TL;DR.
Before we start
Before starting with the Python SSH Tutorial, we want to have a way to test that our software works. If you have already a device accepting SSH connections you are already good to go. However, in case you don't, we have the solution for you. You need to set up a simple GNS3 lab with a single router, as we explained in this article. Once you have the router up and running and with an IP address, you need to configure SSH on it. Here are the commands.
Note that the crypto key generate rsa
command will ask you the size of your RSA keys. The default is 512, but write 1024, as 512 is not long enough to support SSHv2. The commands we actually typed into our router were the following ones.
Python SSH Tutorial
Introducing Paramiko
If you followed our python telnet tutorial, you will know that python comes with a pre-installed telnet library. That's not the case with SSH, so we need to rely on third-party libraries. Currently, one of the best alternatives out there is Paramiko. This library is available for Python 2.7 and Python 3.4 and above and it implements SSHv2 – the current industry standard. You can even read and contribute to the Paramiko code on GitHub, as it is open source.
To work with Paramiko in our project, we need to install it. Simply enough, we can use this command.
This will install Paramiko, as well as any dependency it might have. Now we are finally ready to start with our Python SSH Tutorial.
Why to write an SSH Driver
Our final goal here is to connect to a remote device and interact with it. Thus, SSH is just the mean we use to do so. As a result, we want that the code that gives command to the remote device and interprets the output is fully independent of the SSH implementation.
Our final goal is to connect to a remote device. SSH is just the mean.
Even if you are not working on a SDN Project, but just following this Python SSH Tutorial, you should follow this approach. This is the only way your code will evolve and scale to support future requirements.
Getting started with the driver
Writing a driver means you have a piece of code that imposes requirements for the code you are trying to write, the driver itself. We already have this piece of code that defines the requirement, it is our driver
class. You can check its source code here.
Action required! Create a Python file and name it ssh.py
. This is where the SSH driver we are writing should reside. If you are following the sdncore project, you should put it into vty > drivers
folder. If not, don't worry, but there is one thing you need to do: create driver.py
. Then, copy the code of our driver class (link above) inside of it. Remember that driver.py
and ssh.py
must be in the same folder!
Writing an SSH Driver with Python
Starting the file
The first thing you want to do is ensure you have access to all the libraries you need in your file. Thus, at the very beginning, include these libraries:
- Paramiko client allows you to actually connect to devices with SSH
- AuthenticationException allows you to catch problems with the authentication
- Threading and Time allows us to perform timeout function, like read all text until timeout
- re brings regular expressions, required for the
expect
function - The driver allows you to structure your SSH Driver in a standard way so that you can later create connections independent from the underlying protocol
- DriverError helps you to notify other classes if you encountered an error during the connection
To do all of that, you can use this code at the beginning of your ssh.py
file.
The SSHDriver class
We are going to name our class for SSH connections SSHDriver. We can then create our constructor. It will accept the IP address or domain name of our target device, and username and password for the connection. We also define the default port for SSH connections, which is 22.
All of these parameters were standard parameters from the Driver
class. However, we have a new parameter specific for SSH: auto_add_keys
. SSH relies on RSA keys, and your PC must know the key of the remote device before allowing the SSH connections. If set to True
, we tell our PC to automatically learn the SSH key from the remote device and allow the connection.
Note that we are also defining the _streams
attributes. We will use it to process the output stream coming from the device.
The open() and close() methods
When we init the SSHDriver class, we just prepare it for the connections. However, the connection starts in the moment we call the open()
method. This will launch the Paramiko client connection. We also need to catch any error it may raise.
We also want to notify the user if the authentication failed. Furthermore, setting look_for_keys
to False should make the authentication process easier. In fact, by doing so, the two devices do not need to know each other's key beforehand.
When attempting the connection, if we didn't set auto_add_keys
to True
and then we connect to a host with unknown keys, we will receive an SSHException
. The open()
method will convert it into a DriverError
, giving some more details about the target host that created the problem.
Then, we also need to define the close()
method that terminates the connection.
Sending text over SSH with Python
Our Driver abstract class imposes us to implement a send_text
function. The role of this function is extremely simple, but we need to take care of the output. The role of this function is just to send the command, and we need to store the variables that handle the output for later usage.
We also want to raise an error in case something is wrong with our command. That is, in case we are unable to send it. So, here is the code.
Read Everything
With telnet, we could simply read all the content. Not so easy with SSH. Here we need to verify that the remote device has sent or is sending something, and receive it byte by byte. On top of that, we need to handle the timeout process ourselves. To do that, we need to create a _set_timeout
method that is going to be static.
This method is simple. It sleeps for a given time, in seconds, and then set an event. If you are not familiar with the threading jargon, don't worry. This simply means that after a while it sets a flag. In other parts of our code, we are going to check that flag and as soon as it is set, we are going to interrupt the execution.
We can then use it in our read_eof
function. This function inits a set of raw bytes to zero (this is why the b
at the beginning) in the variable data. It then creates an Event and launches the _set_timeout
function as a thread on that event.
While the thread is sleeping before exiting, we start manipulating our streams with two while loops. We first check that the server has an exit status ready, and then we keep checking if there are data available to read. If they are, we read 1024 bytes and store them into the data variable. We repeat until we finish the data (then the server will not be ready anymore). Not that at the same time, we are also checking if the signal_timeout
is set. If so, we immediately interrupt the execution and return what is left.
The read_until() function
Our goal in this Python SSH Tutorial is to reflect the behavior of our telnet library. Thus, we need to implement the read_until()
function as our Driver
class imposes.
This works exactly like the read_eof
function, but with a single difference. Every time, we check if we have found a given string in the data. If we did, we simply exit the function with the data we received, including the specified text.
The except() function
Probably, the except
function is the most complex of our entire Python SSH Tutorial. In fact, it involves regular expression matching on the output stream coming from the device.
Don't let that scare you. In reality, this is simpler than we think. First, the timeout may be None
in this function, and this means we don't need to set the event mechanism to interrupt the function all the time. A simple if
check on the timeout will do.
Then, we need to check if the user gave us a list of strings or of regular expressions. In the first case, we must convert the strings into compiled regular expressions.
After that, the function is similar to read_until
, but with a key difference. Instead of finding a string, we are matching a regular expression, and doing that for multiple expressions. We need to use a for
loop, but the most important part is that we read 1 byte at a time. This is because regular expression matching is not as simple as finding a string, so we want to return just the data that we should return. To achieve that, we need to not overshoot by reading more data than we need.
Finally, we return the regular expression number that matched, the match object and the data read so far.
Python SSH Tutorial TL;DR
Too Long, Didn't Read? No problem. Here are the key takeaways that will allow you to implement SSH in your Python code, even if you haven't followed the entire python SSH Tutorial.
- Install Paramiko with
pip install paramiko
, it is a library for handling SSH connections - First, create a
paramiko.client.SSHClient
object, the constructor doesn't want any parameter - Then, call
connect()
on this object. You want to specify the target host as first parameter, and then use named parameters for port, username and password. - To avoid getting jammed in key validation, you can set the
look_for_keys
parameters ofconnect()
toFalse
, and also useset_missing_host_key_policy(paramiko.client.AutoAddPolicy())
on the client. - Sending a command is easy, use
exec_command(cmd)
on the client, it returns a tuple with standard in, standard out and standard error streams (in this order). - To read from such streams, take a look at the snippet below. It is a function that expect the standard output received after executing a command.
Conclusion
In this article we explained how to use SSH in Python with Paramiko, and how to write a driver that is equivalent to the one we had for Telnet. If you are working on controlling devices remotely, this will help you a lot because you will be able to control devices regardless of the protocol they use. To do that, just follow the next articles on ICTShore.com (tip: join the newsletter and be sure to have them as soon as they get out!)
What do you think about SSH? Are you still using telnet somewhere and planning the migration? Let me know what you think about this SDN project. And don't forget to check out the GitHub page.
Revolutionary tips to get ahead with technology directly in your Inbox.
If you feel like sharing your knowledge, we are open to guest posting - and it's free. Find out more now.
-->Windows versions
- Windows 10 for desktop editions (Home, Pro, Enterprise, and Education)
- Windows 10 Mobile
Common points of discussion for OEMs who want to build Windows systems with USB Type-C connectors.
USB Type-C connector features
Symmetric and reversible design
- The connector is symmetric. The cable has a USB Type-C connector on each end allowing the host and function device to use USB Type-C connectors. Here is an image that compares the connectors:
- The connector is designed to be reversible. Traditional connectors had to be connected the 'right-side-up'. With the reversible design, the connector can be flipped.
Supports all USB device speeds
The connector can support USB devices that are low-speed, full-speed, high-speed, SuperSpeed (including SS+).
Alternate modes
The connector can support alternate modes. The alternate mode feature allows non-USB protocols to run over the USB cable, while simultaneously preserving USB 2.0 and charging functionality. Currently, the most popular alternate modes are DisplayPort/DockPort and MHL.
DisplayPort / DockPort
This alternate mode allows the user to project audio/video to external DisplayPort displays over a USB connector.
MHL
The MHL alternate mode is allows the user to project video/audio to external displays that support MHL.
Billboard error messages
If a user connects a USB Type-C alternate mode device or adapter that is not supported by the attached PC or phone, the device or adapter can expose a Billboard device that contains information about the error condition to help the user troubleshoot issues.
Increased power limits
A system with USB Type-C connectors has higher power limits, it can support up to 5V, 3A, 15W.
In addition, the connector can optionally support the power delivery feature as defined by the USB Power Delivery OEM . If the connector supports power delivery, a USB Type-C system can be a power source provider or a consumer and support up to 100W.
Supports USB dual roles
Peripheral devices can connect to a mobile system with USB Type-C connectors, changing the traditional role of a mobile system from function to host. When the same system is connected to a PC, the system resumes the role of a function and PC becomes the host.
Operating system input into which alternate mode needs to be negotiated, such as DP 2-lane vs. DP 4-lane
No. The operating system (or any Microsoft-provided software component) plays no part in selecting an alternate mode. The decision is made by the driver for the connector, specifically the USB connector manager (UCM) client driver. The driver does so by communicating with the connector's firmware by using hardware interfaces.
Pre-OS charging with Type-C and PD
Enabling pre-OS charging is owned by the OEM. You can choose to not implement USB Power Delivery, and charge at USB Type-C power levels until you boot into the operating system.
Charging the phone when it is a USB host to enable docking scenarios like Continuum
Here are a few things to consider:
You must to implement USB Power Delivery, so that power and data roles can be swapped independently.
Your dock's upstream port should be implemented as a Charging UFP, defined in the USB Type-C specification. For details, see section 4.8.4, version 1.1.
Your dock should request a DR_Swap if it resolved to a DFP, or a PR_Swap if it resolved to a UFP.
The initial DFP is the power source, so you must change the data role. The initial UFP is the power sink, so you must change the power role. You can perform those operations in your implementation of these callback functions:
Windows 10 Mobile support of USB billboard devices
Yes, if you connect the phone to a device that supports a USB Billboard, as per the USB Device Class Definition for Billboard Devices specification, the user is notified. Your USB connector manager (UCM) client driver is not required to handle the notification. If your system does not recognize the alternate mode, do not enter the mode.
Support for USB Type-C on earlier versions of Windows
USB Type-C is not supported on versions of Windows prior to Windows 10.
UCSI support on earlier versions of Windows
UCSI is not supported on versions of Windows prior to Windows 10.
How to test an implementation of UCSI
To test your implementation, follow the guidelines given in USB Type-C manual interoperability test procedures. We recommend running USB tests in Windows Hardware Lab Kit (HLK) for Windows 10. These tests are listed in Windows Hardware Certification Kit Tests for USB.
Conditions and UI for the different errors
Windows 10 can show a set of USB Type-C error messages to help educate users about the limitations with different combinations of USB Type-C hardware and software. For example, the user might get 'Device is charging slowly' message if the charger connected to the USB Type-C connector is not powerful enough, not compatible with the system, or is connected to a non-charging port. For more information, see Troubleshoot messages for a USB Type-C Windows system.
Connecting a non-PD port to a PD provider and a PD consumer to a system that is not a PD provider
The non-PD port attempts to charge the system by using USB Type-C current levels. For more information, see USB 3.1 and USB Type-C specifications.
Cisco Port Devices Driver Windows 10
Connecting Thunderbolt, SuperMHL, or PCI express to a PC that does not support those capabilities
The alternate mode feature allows non-USB protocols (such as Thunderbolt, SuperMHL) to run over the USB cable, while simultaneously preserving USB 2.0 and charging functionality. If a user connects a USB Type-C alternate mode device or adapter that is not supported by the attached PC or phone running Windows 10, an error condition is detected and a message is shown to the user.
- If the device or adapter exposes a Billboard device, the user sees information about the error condition to help the troubleshoot issues. Windows 10 provides an in-box driver for a Billboard device and notifies the user that an error has occurred.
- The user might see an error notification, 'Try improving the USB connection'. For more information, see Fix USB-C Problems.
For the best results, make sure that the alternate mode device or adapter's requirements are met by PC or phone or cable.
Support and limitations for MTP over USB Type-C in Windows
Windows 10 for desktop editions supports MTP in the initiator role; Windows 10 Mobile supports MTP in the responder role.
How downstream devices and hubs connect and communicate with USB Connector Manager (UCM)
UCM is its own device stack (see Architecture: USB Type-C design for a Windows system). Windows 10 support for USB Type-C includes the required plumbing to make sure that the different class drivers know how to communicate with the different USB Type-C connectors. In order to get Windows 10 support for USB Type-C, you must plug into the UCM device stack.
USB Type-C MUTT requirements for HLK tests
The Windows HLK for Windows 10 contains tests for USB host and function controllers. To test your system, use a USB C-A adapter. These tests are listed in Windows Hardware Certification Kit Tests for USB.
Microsoft support for P2P data transfer between the same Windows 10 SKU
Cisco Port Devices Driver
This is not a valid connection.
- You cannot connect two PCs running Windows 10 for desktop editions.
- You cannot connect two mobile devices running Windows 10 Mobile.
Cisco Wireless Drivers Download
If the user attempts to make such a connection, Windows shows an error message. For more information, see Error messages for a USB Type-C Windows system.
The only valid connection is between a Windows Mobile device and Windows desktop device.
UCM class extension (UcmCx) communication with PMIC or battery driver to get/set charging status
On software-assisted charging platforms, UcmCx communicates with PMIC and the battery subsystem. The client driver may determine the charging levels by communicating with the hardware through hardware interfaces. On hardware-assisted platforms, the embedded controller is responsible for charging. UcmCx takes no part in the process.
- Install Paramiko with
pip install paramiko
, it is a library for handling SSH connections - First, create a
paramiko.client.SSHClient
object, the constructor doesn't want any parameter - Then, call
connect()
on this object. You want to specify the target host as first parameter, and then use named parameters for port, username and password. - To avoid getting jammed in key validation, you can set the
look_for_keys
parameters ofconnect()
toFalse
, and also useset_missing_host_key_policy(paramiko.client.AutoAddPolicy())
on the client. - Sending a command is easy, use
exec_command(cmd)
on the client, it returns a tuple with standard in, standard out and standard error streams (in this order). - To read from such streams, take a look at the snippet below. It is a function that expect the standard output received after executing a command.
Conclusion
In this article we explained how to use SSH in Python with Paramiko, and how to write a driver that is equivalent to the one we had for Telnet. If you are working on controlling devices remotely, this will help you a lot because you will be able to control devices regardless of the protocol they use. To do that, just follow the next articles on ICTShore.com (tip: join the newsletter and be sure to have them as soon as they get out!)
What do you think about SSH? Are you still using telnet somewhere and planning the migration? Let me know what you think about this SDN project. And don't forget to check out the GitHub page.
Revolutionary tips to get ahead with technology directly in your Inbox.
If you feel like sharing your knowledge, we are open to guest posting - and it's free. Find out more now.
-->Windows versions
- Windows 10 for desktop editions (Home, Pro, Enterprise, and Education)
- Windows 10 Mobile
Common points of discussion for OEMs who want to build Windows systems with USB Type-C connectors.
USB Type-C connector features
Symmetric and reversible design
- The connector is symmetric. The cable has a USB Type-C connector on each end allowing the host and function device to use USB Type-C connectors. Here is an image that compares the connectors:
- The connector is designed to be reversible. Traditional connectors had to be connected the 'right-side-up'. With the reversible design, the connector can be flipped.
Supports all USB device speeds
The connector can support USB devices that are low-speed, full-speed, high-speed, SuperSpeed (including SS+).
Alternate modes
The connector can support alternate modes. The alternate mode feature allows non-USB protocols to run over the USB cable, while simultaneously preserving USB 2.0 and charging functionality. Currently, the most popular alternate modes are DisplayPort/DockPort and MHL.
DisplayPort / DockPort
This alternate mode allows the user to project audio/video to external DisplayPort displays over a USB connector.
MHL
The MHL alternate mode is allows the user to project video/audio to external displays that support MHL.
Billboard error messages
If a user connects a USB Type-C alternate mode device or adapter that is not supported by the attached PC or phone, the device or adapter can expose a Billboard device that contains information about the error condition to help the user troubleshoot issues.
Increased power limits
A system with USB Type-C connectors has higher power limits, it can support up to 5V, 3A, 15W.
In addition, the connector can optionally support the power delivery feature as defined by the USB Power Delivery OEM . If the connector supports power delivery, a USB Type-C system can be a power source provider or a consumer and support up to 100W.
Supports USB dual roles
Peripheral devices can connect to a mobile system with USB Type-C connectors, changing the traditional role of a mobile system from function to host. When the same system is connected to a PC, the system resumes the role of a function and PC becomes the host.
Operating system input into which alternate mode needs to be negotiated, such as DP 2-lane vs. DP 4-lane
No. The operating system (or any Microsoft-provided software component) plays no part in selecting an alternate mode. The decision is made by the driver for the connector, specifically the USB connector manager (UCM) client driver. The driver does so by communicating with the connector's firmware by using hardware interfaces.
Pre-OS charging with Type-C and PD
Enabling pre-OS charging is owned by the OEM. You can choose to not implement USB Power Delivery, and charge at USB Type-C power levels until you boot into the operating system.
Charging the phone when it is a USB host to enable docking scenarios like Continuum
Here are a few things to consider:
You must to implement USB Power Delivery, so that power and data roles can be swapped independently.
Your dock's upstream port should be implemented as a Charging UFP, defined in the USB Type-C specification. For details, see section 4.8.4, version 1.1.
Your dock should request a DR_Swap if it resolved to a DFP, or a PR_Swap if it resolved to a UFP.
The initial DFP is the power source, so you must change the data role. The initial UFP is the power sink, so you must change the power role. You can perform those operations in your implementation of these callback functions:
Windows 10 Mobile support of USB billboard devices
Yes, if you connect the phone to a device that supports a USB Billboard, as per the USB Device Class Definition for Billboard Devices specification, the user is notified. Your USB connector manager (UCM) client driver is not required to handle the notification. If your system does not recognize the alternate mode, do not enter the mode.
Support for USB Type-C on earlier versions of Windows
USB Type-C is not supported on versions of Windows prior to Windows 10.
UCSI support on earlier versions of Windows
UCSI is not supported on versions of Windows prior to Windows 10.
How to test an implementation of UCSI
To test your implementation, follow the guidelines given in USB Type-C manual interoperability test procedures. We recommend running USB tests in Windows Hardware Lab Kit (HLK) for Windows 10. These tests are listed in Windows Hardware Certification Kit Tests for USB.
Conditions and UI for the different errors
Windows 10 can show a set of USB Type-C error messages to help educate users about the limitations with different combinations of USB Type-C hardware and software. For example, the user might get 'Device is charging slowly' message if the charger connected to the USB Type-C connector is not powerful enough, not compatible with the system, or is connected to a non-charging port. For more information, see Troubleshoot messages for a USB Type-C Windows system.
Connecting a non-PD port to a PD provider and a PD consumer to a system that is not a PD provider
The non-PD port attempts to charge the system by using USB Type-C current levels. For more information, see USB 3.1 and USB Type-C specifications.
Cisco Port Devices Driver Windows 10
Connecting Thunderbolt, SuperMHL, or PCI express to a PC that does not support those capabilities
The alternate mode feature allows non-USB protocols (such as Thunderbolt, SuperMHL) to run over the USB cable, while simultaneously preserving USB 2.0 and charging functionality. If a user connects a USB Type-C alternate mode device or adapter that is not supported by the attached PC or phone running Windows 10, an error condition is detected and a message is shown to the user.
- If the device or adapter exposes a Billboard device, the user sees information about the error condition to help the troubleshoot issues. Windows 10 provides an in-box driver for a Billboard device and notifies the user that an error has occurred.
- The user might see an error notification, 'Try improving the USB connection'. For more information, see Fix USB-C Problems.
For the best results, make sure that the alternate mode device or adapter's requirements are met by PC or phone or cable.
Support and limitations for MTP over USB Type-C in Windows
Windows 10 for desktop editions supports MTP in the initiator role; Windows 10 Mobile supports MTP in the responder role.
How downstream devices and hubs connect and communicate with USB Connector Manager (UCM)
UCM is its own device stack (see Architecture: USB Type-C design for a Windows system). Windows 10 support for USB Type-C includes the required plumbing to make sure that the different class drivers know how to communicate with the different USB Type-C connectors. In order to get Windows 10 support for USB Type-C, you must plug into the UCM device stack.
USB Type-C MUTT requirements for HLK tests
The Windows HLK for Windows 10 contains tests for USB host and function controllers. To test your system, use a USB C-A adapter. These tests are listed in Windows Hardware Certification Kit Tests for USB.
Microsoft support for P2P data transfer between the same Windows 10 SKU
Cisco Port Devices Driver
This is not a valid connection.
- You cannot connect two PCs running Windows 10 for desktop editions.
- You cannot connect two mobile devices running Windows 10 Mobile.
Cisco Wireless Drivers Download
If the user attempts to make such a connection, Windows shows an error message. For more information, see Error messages for a USB Type-C Windows system.
The only valid connection is between a Windows Mobile device and Windows desktop device.
UCM class extension (UcmCx) communication with PMIC or battery driver to get/set charging status
On software-assisted charging platforms, UcmCx communicates with PMIC and the battery subsystem. The client driver may determine the charging levels by communicating with the hardware through hardware interfaces. On hardware-assisted platforms, the embedded controller is responsible for charging. UcmCx takes no part in the process.
HLK support for USB Type-C
In Windows HLK for Windows 10, there are no USB Type-C specific tests. We recommend running USB tests in Windows HLK for Windows 10. These tests are listed in Windows Hardware Certification Kit Tests for USB.
UCSI
USB Type-C Connector System Software Interface (UCSI) Specification describes the capabilities of the USB Type-C Connector System software Interface (UCSI), and explains the registers and data structures, for hardware component designers, system builders, and device driver developers.
Microsoft provides an in-box driver with Windows, UcmUcsi.sys, that implements the features defined by the specification. This driver is intended for systems with embedded controllers.
Test a UCSI implementation running on Windows 10
We recommend running USB tests in Windows HLK for Windows 10. These tests are listed in Windows Hardware Certification Kit Tests for USB.
Cisco Port Devices Drivers
Test a UCMCx client driver on Windows 10
We recommend running USB tests in Windows HLK for Windows 10. These tests are listed in Windows Hardware Certification Kit Tests for USB.
Cisco Device Lookup
VBus/VConn control and role switch operations handled by the UCM class extension
Cisco Devices List
The UCM class extension might get requests from the operating system to change data or power direction of the connector. When it gets those requests, it invokes client driver's implementation of EVT_UCM_CONNECTOR_SET_DATA_ROLE and EVT_UCM_CONNECTOR_SET_POWER_ROLE callback functions (if the connector implements PD). In the implementation, the client driver is expected control the VBUS and VCONN pins. For more information about those callback functions, see Write a USB Type-C connector driver.