Fixing the Prolific Driver on OS X

Prolific USB to Serial Adapter

Prolific USB to Serial Adapter

There are a couple different USB to serial adapters that you might use as a network engineer. The one pictured in the article is manufactured by Prolific, but sold by multiple different vendors. There’s also another manufactured by FTDI, which I’ve heard good things about, and of course the one built into recent Cisco hardware. The driver for the chip used by Cisco is conveniently included in OS X, but the FTDI and Prolific chips require their own drivers. Myself, I have used the Prolific cables for years and have been generally happy with them.

The best drivers for the Prolific come directly from the manufacturer, not the vendors that resell them. This is because the vendor provided drivers always seem to be out of date. However, the drivers from Prolific don’t work with all cables out of the box. I’m going to show you how to fix that.

1. Get the Driver

If you haven’t already, hop over to the Prolific site to download the driver and install it. Here’s the URL at the time of this writing:

http://www.prolific.com.tw/us/showproduct.aspx?p_id=229&pcid=41

If you are running OS X Yosemite, you may need to read this article to get the driver working: OS X Yosemite and Prolific USB Drivers.

2. Discover Magic Numbers

OK, the numbers aren’t really magic, but the driver will need them so that it can be associated with your USB device. Head to Apple -> About This Mac and and choose System Report. Select USB and scroll until you find your Prolific USB device. It should look something like this:

Watch for the Manufacturer (circled in blue). Then note the Product ID and Vendor ID (circled in red). We will be adding these to the driver.

3. Hex to Decimal Conversion

Calculator in hex mode

Calculator in hex mode

We need to convert the hex numbers to decimal. An easy way to do that is to run Calculator and hit Command-3. Click the “16” above the clear button to switch to hex and enter the number you want to convert (like 0x2008 from the example). Now click the 10 and you have the hex to decimal conversion. If you used 0x2008, you should get 8200. You need to convert both the product and vendor IDs.

4. Edit the Driver

Fire up your favorite terminal emulator and head here:

cd /System/Library/Extensions/ProlificUsbSerial.kext/Contents

At this point, you will need to either fire off a root shell or sudo everything.[1]

Safety First! Backup your Info.plist so you can fix the driver if you break it.

Edit Info.plist with your editor of choice. Scroll down and you will find a section that looks like this:

<key>0557_2008</key>
<dict>
        <key>CFBundleIdentifier</key>
        <string>com.prolific.driver.PL2303</string>
        <key>IOClass</key>
        <string>com_prolific_driver_PL2303</string>
        <key>IOProviderClass</key>
        <string>IOUSBInterface</string>
        <key>bConfigurationValue</key>
        <integer>1</integer>
        <key>bInterfaceNumber</key>
        <integer>0</integer>
        <key>idProduct</key>
        <integer>8200</integer>
        <key>idVendor</key>
        <integer>1367</integer>
</dict>

What you want to do is copy and paste that section. I don’t think the <key> actually matters, but you can change it to match the hex version of the vendor and product ID. So if your vendor ID was 0x2478 for Tripplite with a product ID of 0x2008, you can change the key for your new section to:

<key>2478_2008</key>

Then you will want to put the decimal version of that you converted before into the idProduct and idVendor sections. So for the Tripplite example you only need to change the idVendor and it would look like this:

        <key>idVendor</key>
        <integer>9336</integer>

So the final product for my Tripplite version of the Prolific adapter works when I have this section added:

                <key>2478_2008</key>
                <dict>
                        <key>CFBundleIdentifier</key>
                        <string>com.prolific.driver.PL2303</string>
                        <key>IOClass</key>
                        <string>com_prolific_driver_PL2303</string>
                        <key>IOProviderClass</key>
                        <string>IOUSBInterface</string>
                        <key>bConfigurationValue</key>
                        <integer>1</integer>
                        <key>bInterfaceNumber</key>
                        <integer>0</integer>
                        <key>idProduct</key>
                        <integer>8200</integer>
                        <key>idVendor</key>
                        <integer>9336</integer>
                </dict>

5. Kick the Driver

Now you need to unload and reload the driver to load the new settings:

$ kextload /System/Library/Extensions/ProlificUsbSerial.kext
$ kextunload /System/Library/Extensions/ProlificUsbSerial.kext

You should now have a working USB device! This is a bit of a hassle. I recently found another way to solve this problem, but it’s not free and it’s another blog post.

FIN

NetScanTools Pro

We all like tools (sometimes read “toys”). Especially nifty ones. One of the tools I’ve used for years is NetScanTools Pro from NorthWest Performance Software. Kirk Thomas is the founder of the company and you can find him on twitter as @NetScanTools. I’ve talked to him many times on Twitter and he is extremely helpful and very open to input from his customers.

NetScanTools Pro

I was first introduced to NetScanTools Pro by Laura Chappell of Chappell University, where she teaches about protocol analysis and Wireshark. It’s something of a network discovery tool and then some. It has a collection of active and passive discovery tools, various DNS tools, and some packet level tools. The value in most of this is that all the tools are in one place and it has automation to grab lots of information very quickly, though there are a few unique tools. The only downside to this tool is that it’s only on Windows.

Discovery Tools

You can find out a lot about a network by digging through it’s DNS entries, scanning hosts, doing whois lookups, etc. That generally takes time. NST can really speed this up with several automated reports. In just a few minutes it can give you a report for a domain that includes whois records, DNS details, MX records, blacklists, traceroute with geolocation, port scans, and more.

NetScanTools Scanning

NetScanTools running a scan. You can see most of the options here.

This can save a lot of time in discovering information about a network. You don’t have to do everything as an automated scan. You can also run the tools individually.

There are also a number of tools that give you information about the computer and local network that NST is running upon. If it has something to do with the network, NST has a tool to tell you about it.

Testing Tools

NST also includes what I would call testing tools. SMTP testing, which is nice because you can set just about any set of options. You can test authentication, specific encryption settings, whether messages relay, and much more. It’s all the power of directly connecting to port 25 with telnet, but with checkboxes. You can perform SNMP walks and scans, including SNMPv3 support. A TCP terminal, which essentially allows you to telnet to any port, but with the added ability to choose the source port, is also included. Also, a TimeSync tool which is useful for checking NTP servers. How about this set of options for the enhanced ping tool:

More ping options than you know what to do with.

More ping options than you know what to do with.

Packet Tools

There are nice little collection of packet tools that let you generate arbitrary packets, send Wake on LAN packets, capture packets, and playback a capture. The capture app isn’t Wireshark, but it’s convenient and you can always save the capture and open it in Wireshark.

The options for the NetScanTools Pro packet generator

The options for the NetScanTools Pro packet generator

SSL Certificate Scanner

I like this one. Give it a list or range of IPs, and it’ll tell you about the SSL certs. This could be useful to scan a network and check for soon to be expired certificates, for example.

Yep, my SSL cert is still valid

Yep, my SSL cert is still valid

Graphical Traceroute

If you like mtr, you should also like the new Graphical Traceroute tool. Since a picture is worth 1000 words and since it is Graphical Traceroute, I think the best way to describe this tool is with a screenshot.

The new Graphical Traceroute tool is nifty.

The new Graphical Traceroute tool is nifty.

Closing Thoughts

I’ve had this toolset for years. It’s not one I use ever day, but it’s nice to have when I need it. It just has so many tools bundled into one place and most of them support IPv6. It has a free 30 day demo, so give it a shot and explore this toolset.

Disclosure

I use this software and have paid for this software, however, I did receive a nice discount on my last maintenance renewal when I planned to write a blog post about the software.

FIN

Making a Bootable ESXi USB Drive

The Quick and The Not So Quick

Today, I set out to do what I thought would be a simple and relatively quick task.

VMware USB

VMware USB Drive

As an aside, have you ever noticed that the “quick and easy” tasks seem to take the most time?

Anyway, I have an old Dell workstation with dual Intel Xeon E5520’s and 36GB of RAM that runs VMware. I use for testing and labbing. It’s currently running VMware 5.1 and my evaluation has expired. For a long time… It’s always bugging me about that and I can’t switch it to the free ESXi because it has more than 32GB of RAM. That limitation was removed with VMware 5.5, so I’m finally getting around to upgrading this machine.

I really wanted to install off USB and skip the optical drive, so I grabbed a 1GB USB drive that VMware gave me years ago (conveniently already labelled “VMware”) and copied the files from the ISO to it.

Yeah, not good enough. So I formatted the USB and tried to write an MBR to it. On my Mac. Running Mavericks (OSX 10.9).

Did you know that Mavericks appears to have removed the MBR? This is the error I received from fdisk:

$ fdisk -e /dev/disk3
fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory
Enter 'help' for information

Well, that’s inconvenient.  The I went on to try UNetbootin, which normally has been reliable, but not this time. Still no booting.

Rebooting this machine repeatedly to see if this USB boot is starting to get annoying.

Enter Rufus

While Googling for what I was missing, I found Rufus. Rufus worked great the first time and I was able to do my upgrade and move on. The only drawback is it’s for Windows, but I ran it in a Windows VM and it was fine. Rufus is a single .exe file and when you run it you get this screen:

Rufus

Listen to this dude Rufus, he knows what he’s talking about.

Click the little disc icon near “Create a bootable disk using”, choose your VMware ISO image, and you’re off and running.

You might get a prompt regarding your “menu.c32” being out of date. Let it update it and then it will create your bootable USB.

Next time, I’ll start with Rufus!

FIN

Cisco Modeling Labs Overview (Updated)

CML Screenshot

A pre-release version of the Cisco Modeling Labs GUI.

[Updated with a few new details from Cisco Live Milan. See bottom of page.]

Virtual Internet Routing Lab (VIRL, or “viral”) has been a subject of discussion  in my network geek corner of the Internet since Cisco announced it last year. In between then and now the name has changed. Apparently someone didn’t like having a “viral” product, so now it’s called Cisco Modeling Labs (CML, or “camel”). Right now, it looks like release will probably be early in the second quarter of 2014.

I have been testing (read “playing”) with a hosted CML server for a couple months and would like to share some of what I have learned about it.

The Basics

The system comes in two primary forms. One is a standalone VM that can be run on a desktop or laptop. The other form is for corporate and the image will run on ESXi or on bare metal. There may eventually be the ability to build clusters with the corporate version, which could allow you to lab some impressively large topologies, but that’s something they are looking at for post-FCS. The system runs in a client/server configuration with a front end client built on Eclipse.

The standalone VM flavor will be an inexpensive version for individuals (probably in $100 range) that will support up to 15 Cisco VMs and up to 100 VMs total. It will be able to run on a laptop and is a VMware image. For the Mac users, this image will run in VMware Fusion. It does not work with VirtualBox and I presume it will not work with Parallels. Neither will be supported, that much is certain. This version actually runs in a client/server configuration, too. There just isn’t a separate computer for the server.

Under the hood, the system is built on Linux using OpenStack, some “middleware”, and multiple VMs. The demo server I have been using is some variation of the corporate version and is hosted at Cisco. This cloud hosted flavor probably will not happen for corporate scale, but they know individuals may want this. When I spoke with the Cisco team they said they have plans for this, but it definitely won’t be an option at FCS.

The Devices

So what devices will you be able to lab with, anyway? The demo environment I’m working with has IOS-XRv, IOSv (a virtual version of the traditional IOS, not IOU-based), CSR 1000v, and NX-OS using Titanium. Titanium is still up in the air as to whether it will be released at FCS. Each business unit makes it’s own decisions about including their products in CML, so we’ll have to wait and see. Cisco says there is a project to add the ASA, but it definitely won’t be ready at FCS. You can, however, drop in a Linux machine and you can add third party machines using Grizzly, OpenStack, KVM. This is not functionality I have been able to test.

To connect the devices you will have the options of Ethernet interfaces and Ethernet interfaces. Any interface type you want, as long as it’s Ethernet. Sorry, no serial interfaces.

The system is essentially layer 3 only. There are no ASIC simulations and since all the cool L2 stuff is done in ASICs, there are no L2 features. It all uses a software-based forwarding plane. It can do 802.1Q tagging, but none of the fancy stuff like pseudowire, FabricPath, VPLS, and the like. [L2 is planned for future release, see update section.]

You will also somehow be able to tie this in to an external network, but I can’t test that, either.

The Scaling

I believe that IOSv can have up to 32 interfaces and IOS-XRv supports 124 interfaces, but I’m not certain I have those numbers correct. I can’t/don’t want to build a topology to test them.

Scale is technically only limited by memory, but on a laptop that’s not going to get you far. I believe one setup I was told about was running on something like a C210 UCS chassis and they were running 37 IOS-XRv nodes with over 2000 tunnels in 60GB RAM and using about 12% CPU.

Memory isn’t as much of an issue as you might initially think. VMs with the same memory share the pages, which helps with memory efficiency. In english, this essentially means that if you are running multiple copies of IOS-XRv, there’s really only one copy of IOS-XRv in RAM. Only the data structures for each instance add to your RAM footprint.

CPU allocation is a bigger issue. There are some tradeoffs in the different VMs. IOSv is CPU hungry but has a small memory footprint at around 300MB. IOSv is CPU hungry because it thinks the CPU is dedicated to it. IOS-XR, by contrast, is very light on the CPU but uses more RAM. IOS-XR is designed for a more modern environment. The CSR should be similar, since it was designed to be a VM from the beginning.

The Teaser

This is just a quick overview. I’m working on another post covering some of CML’s capabilities that really take it beyond being just a way to run virtual routers. That’s where CML starts to strut it’s stuff and become really interesting.

Lastly, if you happen to be in the greater Seattle area on Wednesday, February 26th, I’ll be speaking on CML and demoing the product for the Seattle Network Experts Meetup at the INE office in Bellevue at 17:30 PST.

The Update
An attendee of Cisco Live Milan posted some details from the team’s presentation at that conference on the Cisco Learning Network. Here’s what he had that was new:
  • Other Cisco virtual appliances (beyond the ASA) may be available later. This would cover things like vWLC, vWAAS, etc. Still up to the business units.
  • Titanium (NX-OS) will not be in v1. Hopefully v1.1.
  • The OpenStack implementation is using KVM (which is default for OpenStack).
  • His information says vIOS uses 0.5GB of RAM and CSR and XR both need 3GB.
  • The code for each of these is shared with the hardware versions. It’s recompiled for the different target environment. This means same features and bugs. This is very good for using CML to proof of concept a design or changes.
  • There are plans to deliver L2 functionality for both NX-OSv and IOSv.
FIN

GNS3 1.0 CrowdFunding

I suspect everyone reading my blog uses GNS3. If you don’t, go check it out. From their website:

GNS3 is an open source software that simulate complex networks while being as close as possible to the way real networks perform. All of this without having dedicated network hardware such as routers and switches.

They are working towards 1.0 and are getting close. They are currently offering early access a year before the public release if you support the GNS3 1.0 Early Access CrowdFunding campaign.

Unlike products such as Juniper’s Junosphere and Cisco’s VIRL/CML, GNS3 is multi-vendor and multi-platform. This is key for learning and for validating real-world networks, since very few networks don’t have at least some mix of vendors.

Most of us use GNS3 and find it valuable for labbing, whether for certification study, validating configuration changes at the office, or just to test network behavior. It’s worthwhile to give these guys a few bucks to improve and enhance this free product that has been invaluable to the network community. I did and recommend you consider it, yourself.

FIN