A Hardware USB modem for Linux

UPDATE: Seems newer versions of this modem no longer work. See end of post, and comments below. Sorry!

For a long time, I wanted  to be able to run NCID to send caller ID information to my squeezebox, to my MythTV box, to my laptop via growl and NCIDStatusBar, etc – but the hangup was a decent modem.  PCI WinModems are largely useless; I have no desire to run binary blobs even if I happen to find one somewhere that works.  External serial modems are a possibility but it’s another AC adapter brick, more cables, and heck my server doesn’t even have a serial port.

So I was very pleased to find that Conexant has a new usb chipset (CX93010 + CX20548) which implements the USB CDC (Communication Device Class) standard.

I bought the Rosewill RNX-56USB modem from newegg.com, and with a minor patch, it’s all working beautifully. I find it a bit funny that in the age of fiber to the home, there’s finally a usable hardware modem again.

UPDATE: Steve, in comments below, points out:

Rosewill support confirms that recent shipments of the modem do not report CID due to an unknown change at the manufacturing level. They say it is out of their hands as the modem is not actually made by them.”

Well, that is a bummer indeed.

11 thoughts on “A Hardware USB modem for Linux

  1. Chris Lenderman

    Sweet! Just about ready to ditch my AMD Athlon XP 2100+ and USR RS-232 Sportster and needed a modem solution.

    Thank you for introducing me to NCID… I had developed my own custom server(linux)/client(win32), but my server has always been a bit of a “hack”. Now that I have learned about NCID, I will be adapting my client to use it (I’m about an hour or so away from being complete, if that far).

    Reply
  2. Chris Lenderman

    Yep, we have definitely been chatting about it.

    Hey, did you have to do anything special to get the Rosewill RNX-56USB to display callerID data? Seems like despite the AT+VCID=1 init string that I provide, the modem will not display callerid info!

    Reply
  3. Steve

    I just picked up one of these modems to use with ncid and can’t get any caller id’s out of if either. I’ve tried the init string mentioned above, i’ve also tried it on a mac and windows and it never seems to report the called id even though another phone on the same line does.

    Any idea what my problem could be?

    Reply
    1. Eric Sandeen Post author

      Steve, not sure … it just worked for me, bummer. Do you have it on the right side of a DSL Filter? :)

      The lsusb -v output is this, if it helps at all:

      Bus 003 Device 007: ID 0572:1321 Conexant Systems (Rockwell), Inc.
      Device Descriptor:
      bLength 18
      bDescriptorType 1
      bcdUSB 1.10
      bDeviceClass 2 Communications
      bDeviceSubClass 0
      bDeviceProtocol 0
      bMaxPacketSize0 64
      idVendor 0x0572 Conexant Systems (Rockwell), Inc.
      idProduct 0x1321
      bcdDevice 1.00
      iManufacturer 1 Conexant
      iProduct 2 USB Modem
      iSerial 3 24680246
      bNumConfigurations 2
      Configuration Descriptor:
      bLength 9
      bDescriptorType 2
      wTotalLength 73
      bNumInterfaces 2
      bConfigurationValue 1
      iConfiguration 0
      bmAttributes 0x80
      MaxPower 100mA
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 1
      bInterfaceClass 2 Communications
      bInterfaceSubClass 2 Abstract (modem)
      bInterfaceProtocol 1 AT-commands (v.25ter)
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x81 EP 1 IN
      bmAttributes 3
      Transfer Type Interrupt
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 128
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 0
      bNumEndpoints 2
      bInterfaceClass 10 CDC Data
      bInterfaceSubClass 0 Unused
      bInterfaceProtocol 0
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x82 EP 2 IN
      bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x02 EP 2 OUT
      bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 1
      CDC Header:
      bcdCDC 1.10
      CDC Call Management:
      bmCapabilities 0x03
      call management
      use DataInterface
      bDataInterface 1
      CDC ACM:
      bmCapabilities 0x07
      sends break
      line coding and serial state
      get/set/clear comm features
      CDC Union:
      bMasterInterface 0
      bSlaveInterface 1
      Country Selection:
      iCountryCodeRelDate 4 04052004
      wCountryCode 0x4803
      Configuration Descriptor:
      bLength 9
      bDescriptorType 2
      wTotalLength 96
      bNumInterfaces 3
      bConfigurationValue 2
      iConfiguration 0
      bmAttributes 0x80
      MaxPower 100mA
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 1
      bInterfaceClass 2 Communications
      bInterfaceSubClass 2 Abstract (modem)
      bInterfaceProtocol 1 AT-commands (v.25ter)
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x81 EP 1 IN
      bmAttributes 3
      Transfer Type Interrupt
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 128
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 0
      bNumEndpoints 2
      bInterfaceClass 10 CDC Data
      bInterfaceSubClass 0 Unused
      bInterfaceProtocol 0
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x82 EP 2 IN
      bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 10
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x02 EP 2 OUT
      bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 10
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 2
      bAlternateSetting 0
      bNumEndpoints 2
      bInterfaceClass 10 CDC Data
      bInterfaceSubClass 0 Unused
      bInterfaceProtocol 0
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x83 EP 3 IN
      bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x03 EP 3 OUT
      bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 1
      CDC Header:
      bcdCDC 1.10
      CDC Call Management:
      bmCapabilities 0x03
      call management
      use DataInterface
      bDataInterface 1
      CDC ACM:
      bmCapabilities 0x07
      sends break
      line coding and serial state
      get/set/clear comm features
      CDC Union:
      bMasterInterface 0
      bSlaveInterface 1
      Country Selection:
      iCountryCodeRelDate 4 04052004
      wCountryCode 0x4803

      Reply
  4. Steve

    The modem seems to function fine and Linux has no trouble talking to it, same with OS X and windows. I’m on FIOS for my phones but they seems to get caller id fine.

    I’ve seen other mention on the web of people not getting the modem to ever report caller id, so maybe some of them are defective. I sent it back for an exchange and will see if the next one works.

    Reply
  5. admin

    Steve asked me to post this for him:

    I just received a RNX-56USB from new egg today (12-14-2011) I can verify that kernel 2.6.33.2 is already patched and the modem functions.

    The basic modem appears to work fine, but CID does not work. using ncidd in debug mode, ie nicdd -Dv3 we find:
    Modem set for CallerID.
    Network Port: 3333
    Debug Mode
    Not using PID file, there was no '-P' option.
    Modem is fd 4
    CIDINFO: *LINE*-*RING*1*TIME*18:43:25*
    CIDINFO: *LINE*-*RING*2*TIME*18:43:31*
    CID: *DATE*12142011*TIME*1843*LINE*-*NMBR*RING*MESG*NONE*NAME*No Caller ID*
    CIDINFO: *LINE*-*RING*0*TIME*18:43:38*

    Checking with minicom we find:
    Welcome to minicom 2.5

    OPTIONS: I18n
    Compiled on Oct 28 2011, 20:44:15.
    Port /dev/ttyACM0

    Press CTRL-A Z for help on special keys

    ATZ
    OK
    AT+VCID=1;+GCI?;+MS?
    +GCI: B5

    +MS: V92,1,300,48000,300,56000

    OK

    RING

    RING

    RING

    No caller id data.

    Looking at the device, lsusb -v (only showing device information)
    Bus 004 Device 027: ID 0572:1321 Conexant Systems (Rockwell), Inc.
    Device Descriptor:
    bLength 18
    bDescriptorType 1
    bcdUSB 1.10
    bDeviceClass 2 Communications
    bDeviceSubClass 0
    bDeviceProtocol 0
    bMaxPacketSize0 64
    idVendor 0x0572 Conexant Systems (Rockwell), Inc.
    idProduct 0x1321
    bcdDevice 1.00
    iManufacturer 1 Conexant
    iProduct 2 USB Modem
    iSerial 3 24680246
    bNumConfigurations 2
    Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 73
    bNumInterfaces 2
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0x80
    (Bus Powered)
    MaxPower 100mA
    Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 0
    bAlternateSetting 0
    bNumEndpoints 1
    bInterfaceClass 2 Communications
    bInterfaceSubClass 2 Abstract (modem)
    bInterfaceProtocol 1 AT-commands (v.25ter)
    iInterface 0
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x81 EP 1 IN
    bmAttributes 3
    Transfer Type Interrupt
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0040 1x 64 bytes
    bInterval 128
    Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 1
    bAlternateSetting 0
    bNumEndpoints 2
    bInterfaceClass 10 CDC Data
    bInterfaceSubClass 0 Unused
    bInterfaceProtocol 0
    iInterface 0
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x82 EP 2 IN
    bmAttributes 2
    Transfer Type Bulk
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0040 1x 64 bytes
    bInterval 1
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x02 EP 2 OUT
    bmAttributes 2
    Transfer Type Bulk
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0040 1x 64 bytes
    bInterval 1
    CDC Header:
    bcdCDC 1.10
    CDC Call Management:
    bmCapabilities 0x03
    call management
    use DataInterface
    bDataInterface 1
    CDC ACM:
    bmCapabilities 0x07
    sends break
    line coding and serial state
    get/set/clear comm features
    CDC Union:
    bMasterInterface 0
    bSlaveInterface 1
    Country Selection:
    iCountryCodeRelDate 4 04052004
    wCountryCode 0x4803
    Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 96
    bNumInterfaces 3
    bConfigurationValue 2
    iConfiguration 0
    bmAttributes 0x80
    (Bus Powered)
    MaxPower 100mA
    Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 0
    bAlternateSetting 0
    bNumEndpoints 1
    bInterfaceClass 2 Communications
    bInterfaceSubClass 2 Abstract (modem)
    bInterfaceProtocol 1 AT-commands (v.25ter)
    iInterface 0
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x81 EP 1 IN
    bmAttributes 3
    Transfer Type Interrupt
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0040 1x 64 bytes
    bInterval 128
    Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 1
    bAlternateSetting 0
    bNumEndpoints 2
    bInterfaceClass 10 CDC Data
    bInterfaceSubClass 0 Unused
    bInterfaceProtocol 0
    iInterface 0
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x82 EP 2 IN
    bmAttributes 2
    Transfer Type Bulk
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0040 1x 64 bytes
    bInterval 10
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x02 EP 2 OUT
    bmAttributes 2
    Transfer Type Bulk
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0040 1x 64 bytes
    bInterval 10
    Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 2
    bAlternateSetting 0
    bNumEndpoints 2
    bInterfaceClass 10 CDC Data
    bInterfaceSubClass 0 Unused
    bInterfaceProtocol 0
    iInterface 0
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x83 EP 3 IN
    bmAttributes 2
    Transfer Type Bulk
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0040 1x 64 bytes
    bInterval 1
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x03 EP 3 OUT
    bmAttributes 2
    Transfer Type Bulk
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0x0040 1x 64 bytes
    bInterval 1
    CDC Header:
    bcdCDC 1.10
    CDC Call Management:
    bmCapabilities 0x03
    call management
    use DataInterface
    bDataInterface 1
    CDC ACM:
    bmCapabilities 0x07
    sends break
    line coding and serial state
    get/set/clear comm features
    CDC Union:
    bMasterInterface 0
    bSlaveInterface 1
    Country Selection:
    iCountryCodeRelDate 4 04052004
    wCountryCode 0x4803
    Device Status: 0x0000
    (Bus Powered)

    Finally, some digging around on the net i found this.
    http://www.identafone.com/modems.html
    Quoting from the above site:
    ” Manufacture: Rosewill
    Windows XP, Vista
    Model: RNX-56USB (USB)
    Works well in TAPI mode
    Works with Bell Canada CID.
    UPDATE: Rosewill support confirms that recent shipments of the modem do not report CID due to an unknown change at the manufacturing level. They say it is out of their hands as the modem is not actually made by them.”

    Looks like this modem is out, bummed indeed.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>