OpenCS

From Hackstrich

OpenCS will be an open-hardware (and open-source) console server project.

Status

  • 2013-05: Too many other projects on the go, changing to dormant for now until I get some things done.
  • 2013-02-03: Base for the transmit side of firmware is written but not yet tested. Receive side not written, and changing parameters not yet supported.
  • 2013-02-02: Started working on firmware.
  • 2013-01-30: Built first IO232 board, power up + programs OK, need to write firmware now.
  • 2013-01-28: Ordered parts for the first IO232 board.
  • 2012-12-31: IO232 board is here! Need to order parts and write a bunch of Verilog code to get this module working.
  • 2012-12-25: Still waiting for board to arrive...
  • 2012-12-05: IO232 board shipped.
  • 2012-11: Submitted IO232 board.
  • 2012-10-25: Finished routing BACK4VS Rev001, 4-slot vertical single-sided backplane. Now just waiting to submit all 3 to OSH Park when I can fund it.
  • 2012-10-14: Finished routing CTLR Rev001, added mounting holes to be able to vertically stack IO232 and tagged Rev002. Backplane board still needs to be done.
  • 2012-10-09: Schematic for CTLR done, started routing board.
  • 2012-10-08: Finished schematic/routing/CAM for IO232. Working on CTLR now.
  • 2012-10: Started putting design together

Specs

  • 1U rack-mount chassis with 8 slots (4 front, 4 back) connected by an internal backplane
    • Slots will ideally all be equivalent so users can put power/ports where they want them, can be filled with:
      • a PSU (up to two per system)
      • a controller (up to two per system)
      • an expansion module (lets you chain more chassis, up to two per system)
      • an I/O module (gives you serial ports)
  • SPI between modules with module select pins shifted by one by the backplane for each slot
  • Fully-expanded base chassis would be two PSUs, two controllers, and 4x 8-port RS232 modules.
    • 2 controllers + 4 I/O modules + 2 PSUs in the base
    • 4 I/O modules in each expansion unit, up to 3 expansion units
    • Each slot on the base gets 4 module select lines, which it can use or give to another chassis
    • Total of 4*8 = 32 select lines needed
  • Controllers will have an Ethernet port and two serial ports on them (console/aux)
    • Probably PIC32-based makes the most sense
  • I/O modules will have up to 8 serial ports on them
    • Probably CPLD-based makes the most sense

Revision 1 Issues

IO-232

  • 1uF caps not on BOM
  • Footprints for cap arrays have way too little exposed copper
  • Status LED is backwards

Commands

  • 0x01 - MODULE IDENTIFY
    • No parameters
    • Response Byte 1 - Module Model ID
    • Response Byte 2 - Protocol version
    • Response Byte 3 - Firmware version high byte
    • Response Byte 4 - Firmware version low byte
  • 0x02 - PORT SEND DATA
    • Parameter Byte 1 - Bits 0-2 - Channel to address
    • Parameter Byte 1 - Bits 3-7 - How many bytes to send (max 32)
    • Parameter Bytes 2-X - Data to send
  • 0x03 - PORT MODE
    • Parameter Byte 1 - New port mode
      • 0x00 - Do not change
      • 0x01 - RS232
    • Response Byte 1 - Updated port mode
  • 0x04 - PORT SPEED
    • Parameter Byte 1 - Baud rate
      • 0x00 - Do not change
      • 0x01 - 300
      • 0x02 - 1200
      • 0x03 - 2400
      • 0x04 - 4800
      • 0x05 - 9600
      • 0x06 - 19200
      • 0x07 - 38400
      • 0x08 - 57600
      • 0x09 - 115200
      • 0x0A - 230400
      • 0x0B - 460800
      • 0x0C - 921600
    • Response Byte 1 - Updated port speed
  • 0x06 - PORT DATABITS
    • Parameter Byte 1 - New number of data bits
      • 0x00 - Do not change
      • 0x01 - 5
      • 0x02 - 6
      • 0x03 - 7
      • 0x04 - 8
    • Response Byte 1 - Updated number of data bits
  • 0x07 - PORT PARITY
    • Parameter Byte 1 - New parity setting
      • 0x00 - Do not change
      • 0x01 - Even Parity
      • 0x02 - Odd Parity
      • 0x03 - Mark Parity
      • 0x04 - Space Parity
    • Response Byte 1 - Updated parity setting
  • 0x08 - PORT STOPBITS
    • Parameter Byte 1 - New number of stop bits
      • 0x00 - Do not change
      • 0x01 - 1
      • 0x02 - 1.5
      • 0x03 - 2
    • Response Byte 1 - Updated number of stop bits