M400C. Figure 1.1: M400C Block Diagram M400C uses USB-C DisplayPort Alternate Mode to connect as a display to the host PC. The other functions (audio, sensors, etc.) are provided over USB, and will function normally if the host does not support USB-C DisplayPort Alternate Mode. If the host does not support USB 3.0, then the camera frame rate will additionally be limited.
Table 1.1: Compatible Devices 1.2 System Requirements The following specifications are required for the host to be able to use all features of M400C: • A single USB-C [4] [5] port is required that supports USB-C DisplayPort Alternate Mode [7] for full functionality.
M400C begins operating when plugged in to a host device with a USB cable. Identify the USB- C port on the host computer that supports USB-C DisplayPort Alternate Mode. Plug the USB-C cable in to this port. Plug the other end in to M400C. M400C will power on and enumerate with the host device.
Section 3.1.2. 2.2.5 Buttons M400C has four physical buttons — three along the top edge, and one on the side. The buttons are presented to the host as a USB HID keyboard with programmable key codes. The USB API is used to configure the key codes that are used.
. The sensor readings are reported to the host over the USB Sensor HID class. For details see Section D.3. The orientation of the X-, Y-, and Z-axes relative to the M400C device is shown in Figure 2.1. Revision 7...
Waiting for video data Solid Error state Table 2.3: Status LED states When M400C is in an error state, the USB API can be queried to get more information on the specific error. 2.3 Features 2.3.1 Auto-rotation M400C can use the onboard orientation sensor to detect if the unit is being worn on the left or right side of the user’s head and auto-rotate the display accordingly.
2.3.2 Programmable Buttons The hardware buttons on M400C use a default set of key codes that can be reprogrammed using the Vuzix USB API Write Button Key Codes (Section 3.1.11) command. The setting is written to non-volatile storage on M400C and will persist across power cycles until either reprogrammed using Write Button Key Codes again or reset using Restore Defaults (Section 3.1.4).
3.1 Vuzix USB API 3.1.1 Description M400C enumerates two separate internal devices that implement the Vuzix USB API. The first is the main microcontroller, responsible for the operation of the majority of the system. The other is a secondary microcontroller that bridges the touchpad controller to USB as a HID device.
Set button function Read Read Button Key Codes 0xB1 Read button function Read Error Report Send error bitmap 0xF6 Table 3.1: Vuzix Main Microcontroller USB API Commands Secondary Microcontroller Direction Description OpCode Action Read Get Version Get firmware version 0x03...
Subsys_HWversion Scaler FPGA hardware version (versions are returned as whole numbers) Subsys_vmajor Currently unused Subsys_vminor Currently unused Tracker_HWversion Microcontroller hardware version (versions are returned as whole numbers) Tracker_SWversion Microcontroller software version (versions are returned as whole numbers) Revision 7 Vuzix Corporation...
0x31 Receive Packet 10 11 12 13 14 15 16 17 18 19 20 21 22 23 0x01 0x31 value Fields value Return values: 0: Left eye mode is active 1: Right eye mode is active Revision 7 Vuzix Corporation...
10 11 12 13 14 15 16 17 18 19 20 21 22 23 0x01 0x37 value Fields value Return values: 0: Autorotation disabled, use the Force Left Eye command to set the device orientation 1: Autorotation enabled Revision 7 Vuzix Corporation...
Description Set the key codes returned by the physical buttons on the device. Figure 3.1 shows the relation- ship between the button names A–D and the physical location on M400C. Saved to non-volatile memory. For default values refer to Table 2.5.
Description Return the key codes assigned to the physical buttons on the device. See Figure 3.1 for the relationship between the button names A–D and the physical location on M400C. Send Packet 10 11 12 13 14 15 16 17 18 19 20 21 22 23...
S Scroll direction. Allowed values: 0: Default behavior, two-finger swipe towards buttons scrolls up 1: Two-finger swipe towards buttons scrolls down P Pan direction. Allowed values: 0: Default behavior, two-finger swipe forward pans right 1: Two-finger swipe forward pans left Revision 7 Vuzix Corporation...
Page 25
P Pan direction. Return values: 0: Default behavior, two-finger swipe forward pans right 1: Two-finger swipe forward pans left Z Zoom direction. Return values: 0: Default behavior, pinch in to zoom out 1: Pinch in to zoom in Revision 7 Vuzix Corporation...
3.2 Audio 3.2.1 Description The audio microcontroller on M400C bridges the internal DSP to the USB interface. The micro- controller enumerates as a USB sound card (UAC 1.0) and a virtual COM port (CDC). The micro- controller can receive commands via the COM port to change audio use cases or USB modes.
UVC API. The M400C camera controller also enumerates a HID endpoint with additional custom com- mands that do not use the UVC API. This HID endpoint uses a simple 64 byte buffer to read and write data to the camera controller from a host application.
Page 29
The code to accomplish the same Torch On command for an Android application is shown below. The implementation in Kotlin: val bytes = byteArrayOf(2, 9, 1) connection.controlTransfer( 0x21, ^// requestType (write) 0x09, ^// request (set report) 0x0200, ^// value Revision 7 Vuzix Corporation...
(AE) or to reduce flicker as much as possible. HID Report Format Priority Command = 2 Fields Command Set to 2. Priority Allowed values: 0: Priority to AE 1: Priority to flicker cancellation Returns No return value. Revision 7 Vuzix Corporation...
Set the maximum frame rate returned by the camera over USB. HID Report Format Frame Rate Command = 3 Fields Command Set to 3 Frame Rate Allowed values: 0: Disable frame rate control 3–60: Set maximum rate to this value Returns No return value. Revision 7 Vuzix Corporation...
Command Set to 4 AF Mode Allowed values: 0: One shot contrast AF 3: Continuous contrast AF 8: One shot contrast and PDAF hybrid AF 15: Continuous contrast and PDAF hybrid AF Returns No return value. Revision 7 Vuzix Corporation...
Strength Command = 5 Fields Command Set to 5 NR Allowed values: 0: Auto mode 1: Fixed mode Strength Only valid when NR = 1. Allowed values: 0: Weakest … 10: Strongest Returns No return value. Revision 7 Vuzix Corporation...
Sets the camera capture settings to work better for black and white text documents. HID Report Format Command = 6 Scan Mode Fields Command Set to 6 Scan Mode Allowed values: 0x00 : Normal mode 0x20 : Scanner mode Returns No return value. Revision 7 Vuzix Corporation...
Command Set to 7 Mode Allowed values: 0: Color 1: Mono 3: Negative 10: Black and white Threshold Only valid when Mode = 10. Allowed values: 0: Auto 1–255: Gray threshold value Returns No return value. Revision 7 Vuzix Corporation...
Turn on the LED in torch (flashlight) mode. Only to be used if the camera is off or in video mode. HID Report Format Command = 9 Fields Command Set to 9 Byte 1 Set to 1 Returns No return value. Revision 7 Vuzix Corporation...
Turn off the LED from torch (flashlight) mode. Only to be used if the camera is off or in video mode. HID Report Format Command = 10 Fields Command Set to 10 Byte 1 Set to 1 Returns No return value. Revision 7 Vuzix Corporation...
Only to be used if the camera is in still capture mode. HID Report Format Command = 11 Fields Command Set to 11 Byte 1 Set to 1 Returns No return value. Revision 7 Vuzix Corporation...
Force flash on. Front LED will be illuminated during image capture. Only to be used if the camera is in still capture mode. HID Report Format Command = 12 Fields Command Set to 12 Byte 1 Set to 1 Returns No return value. Revision 7 Vuzix Corporation...
Set flash to auto. Front LED will be illuminated during image capture when the scene is dimly lit. Only to be used if the camera is in still capture mode. HID Report Format Command = 13 Fields Command Set to 13 Byte 1 Set to 1 Returns No return value. Revision 7 Vuzix Corporation...
Set flash to off. Front LED will not be used during image capture. Only to be used if the camera is in still capture mode. HID Report Format Command = 14 Fields Command Set to 14 Byte 1 Set to 1 Returns No return value. Revision 7 Vuzix Corporation...
Page 47
CX3 Year CX3 firmware build date year, offset from 2000 (e.g. a value of 21 means the year is 2021) CX3 Month CX3 firmware build date month CX3 Day CX3 firmware build date day of the month Revision 7 Vuzix Corporation...
Page 48
ISP Major Major component (X) of ISP firmware version, in X.Y format ISP Minor Minor component (Y) of ISP firmware version, in X.Y format Revision 7 Vuzix Corporation...
X Axis (2 bytes) Gyrometer 3D 131 LSB/(dps) Angular Velocity about Y Axis (2 bytes) 131 LSB/(dps) Angular Velocity about Z Axis (2 bytes) 131 LSB/(dps) Figure D.4: Sensor HID Get_Report(Input) Format (1 of 2) Revision 7 Vuzix Corporation...
Page 56
0.001/LSB Data Field: Quaternion Device Orientation Y Component (2 bytes) 0.001/LSB Data Field: Quaternion Z Component (2 bytes) 0.001/LSB Data Field: Quaternion W Component (2 bytes) 0.001/LSB Figure D.5: Sensor HID Get_Report(Input) Format (2 of 2) Revision 7 Vuzix Corporation...
Page 57
Reserved for use as Change Sensitivity Absolute modifier range (2 bytes) Reserved for use as Maximum modifier range (2 bytes) Reserved for use as Minimum modifier range (2 bytes) Figure D.6: Sensor HID Get_Report(Feature) Format (1 of 2) Revision 7 Vuzix Corporation...
Page 58
Reserved for use as Change Sensitivity Absolute modifier range (2 bytes) Reserved for use as Maximum modifier range (2 bytes) Reserved for use as Minimum modifier range (2 bytes) Figure D.7: Sensor HID Get_Report(Feature) Format (2 of 2) Revision 7 Vuzix Corporation...
USB audio device missing after re- In certain hosts, if the host device is re- boot booted with the M400C plugged in, the M400C USB audio device may not enumerate properly when the host powers on. Unplugging and re- plugging the M400C will solve the issue.
Page 60
Changes February 4, 2022 Devrin Talen Initial release February 28, 2022 Devrin Talen Updated Vuzix and audio USB API details Added Touchpad Orientation command Updated Brightness Set command Updated Force Left Eye commands Updated button mapping Updated audio operation March 24, 2022...
Page 61
Bibliography [1] USB Implementers’ Forum. Universal Serial Bus Device Class Definition for Audio Devices, 1.0 edition, March 1998. [2] USB Implementers’ Forum. Device Class Definition for Human Interface Devices (HID), 1.11 edition, May 2001. [3] USB Implementers’ Forum. Universal Serial Bus Device Class Definition for Video Devices, 1.5 edition, August 2012.
Need help?
Do you have a question about the M400C and is the answer not in the manual?
Questions and answers