Vuzix M400C User manual

M400C
Developer Manual

Contents
1 Overview 3
1.1 Introduction ................................... 3
1.2 System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Usage 5
2.1 Connecting to the Host PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Operation .................................... 5
2.2.1 Display.................................. 5
2.2.2 Camera.................................. 5
2.2.3 Torch................................... 6
2.2.4 Touchpad ................................ 6
2.2.5 Buttons.................................. 6
2.2.6 Audio................................... 6
2.2.7 Orientation Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.8 StatusLED................................ 8
2.3 Features..................................... 8
2.3.1 Auto-rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.2 Programmable Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.3 Non-Volatile Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 USB API 10
3.1 VuzixUSBAPI.................................. 10
3.1.1 Description................................ 10
3.1.2 Supported Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.3 GetVersion................................ 12
3.1.4 Restore Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1.5 Brightness Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.6 Brightness Get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.7 Force Left Eye Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1.8 Force Left Eye Get . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1.9 Autorotation Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.10 Autorotation Get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.11 Write Button Key Codes . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.12 Read Button Key Codes . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1

3.1.13ErrorReport ............................... 22
3.1.14 Touchpad Orientation . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.15 Touchpad Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Audio ...................................... 26
3.2.1 Description................................ 26
3.2.2 AudioModes............................... 26
3.2.3 Summary of Commands . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Camera ..................................... 27
3.3.1 Description................................ 27
3.3.2 Example Command Execution . . . . . . . . . . . . . . . . . . . . . . 27
3.3.3 Exposure Compensation Control . . . . . . . . . . . . . . . . . . . . . 30
3.3.4 Flicker Cancel Priority Control . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.5 Max Frame Rate Control . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.6 AFMode................................. 33
3.3.7 Noise Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.8 ScannerMode .............................. 35
3.3.9 ColorMode................................ 36
3.3.10 JPEG Quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.11TorchOn................................. 38
3.3.12TorchOff................................. 39
3.3.13 Torch On (Still) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.14FlashOn ................................. 41
3.3.15FlashAuto ................................ 42
3.3.16FlashOff................................. 43
3.3.17 Get Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
A Block Diagram 48
B Display EDID 49
C USB Device Tree 50
D USB HID Reports 52
D.1 Buttons ..................................... 52
D.2 Touchpad .................................... 53
D.3 Orientation Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
E Errata 58
2 Revision 7 Vuzix Corporation

Chapter 1
Overview
1.1 Introduction
Vuzix M400C is a USB-C multi-function device packaged in a smart glasses form factor. M400C
includes a display, camera, touchpad, and other components. Figure 1.1 shows the block diagram
of 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.
Since M400C operates as a USB-C peripheral, a host PC is required. M400C is designed to
work with the dynaEdge DE-200 as well as other PCs that support USB-C DisplayPort Alternate
Mode, in addition to select cellphones such as the LG V50.
3

Brand Model
Dynabook dynaEdge DE-100
Dynabook dynaEdge DE200
LG V60
LG V50 Thinq
Motorola Edge Plus
Samsung Galaxy S9
Samsung Galaxy S20
Samsung Galaxy S21
Sharp Aquos R5
Table 1.1: Compatible Devices
1.2 System Requirements
The following specications 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.
–If the host has a USB 3.0 Type-A connector, then the display will not be functional.
Other functions (camera, sensors, touchpad, etc.) will work normally.
–If the host has a USB 2.0 Type-A connector, then the display will not be functional
and the camera will be limited to 1080p30 resolution and frame rate. Other functions
(sensors, touchpad, etc.) will work normally.
• Capable of providing 15W (5V 3A) on the USB-C port per the USB Power Delivery Speci-
cation [6].
Table 1.1 lists PC and mobile phone devices that have been tested to work with M400C.
4 Revision 7 Vuzix Corporation

Chapter 2
Usage
2.1 Connecting to the Host PC
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.
The status LED will illuminate green to show that the device is powered and functioning prop-
erly. See Section 2.2.8 for a description of error codes that may be shown by the LED if there is a
hardware issue.
2.2 Operation
2.2.1 Display
M400C enumerates as a 1280x720p60 DisplayPort monitor with the host device. Once con-
nected, the display panel in the eyepiece will turn on. There is no separate control for turning
the display on or off. The display panel resolution in M400C is 640x360 and the internal video
pipeline handles down-scaling the input 1280x720 using a bi-linear scaler.
Windows hosts can use the Display Settings in Control Panel to congure screen mirroring,
extending, etc.
Section 2.3.1 describes the auto-rotation feature which can rotate the display automatically
depending on whether the user is wearing M400C on the right or left side.
2.2.2 Camera
The camera will power on when the host opens a USB Video Class (UVC) [3] connection to M400C.
Windows hosts can use the built-in Camera application to connect to the M400C camera. The
camera advertises the available resolutions and frame rates over UVC and the host can select
the desired mode. When the camera is active the red privacy LED will be illuminated.
5

Flash is supported for low-light compensation. The host can enable this over the USB API as
well, see Section 3.3.1.
Mode Resolution Aspect Ratio Frames Per Second
Video 3840x2160 16:9 30
Video 1920x1080 16:9 60
Video 1920x1080 16:9 30
Video 2052x1536 4:3 30
Photo 3840x2160 16:9 n/a
Photo 1920x1080 16:9 n/a
Photo 4160x3120 4:3 n/a
Photo 2052x1536 4:3 n/a
Table 2.1: Supported camera resolutions and frame rates
2.2.3 Torch
The ash LED also supports torch mode. The host can toggle this using the USB API.
2.2.4 Touchpad
M400C enumerates a USB HID [2] mouse that is controlled with the touchpad. For details on the
HID report see Section D.2. The touchpad is capacitive and usable with some gloves, depending
on the thickness. The touchpad supports the following gestures:
• Single-nger up, down, left, right, and tap
• Two-nger up, down, left, right, and tap
• Pinch to zoom in/out
M400C provides a control HID interface that implements the Vuzix USB API. The API func-
tions are detailed in 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 congure the key codes that are used. For details on the HID report see Section D.1.
2.2.6 Audio
M400C uses a microcontroller to connect the internal audio DSP to USB. This microcontroller
provides a USB Audio Class (UAC) [1] sound card as well as other endpoints, based on the control
mode. For more details see Section 3.2. The sound card receives and sends audio in 2 channel,
6 Revision 7 Vuzix Corporation

16 bit, 48 kHz format. Audio streamed to M400C is down-mixed to a single channel and played
on the mono loudspeaker. Audio captured by the microphones on M400C is processed by the
onboard DSP depending on the current audio use case and streamed to the host.
The following use cases are available:
• Playback
Direct Playback The default playback mode. Audio sent to the sound card is played on
the loudspeaker without any processing.
• Record
Direct Record The default record mode. Audio recorded from the front microphone is
sent to the host without any processing.
Live Record Audio recorded by the front two microphones is sent to the host without any
processing.
Personal Record Audio recorded by the microphones is processed by the codec DSP to
record audio coming from the direction of the user (beam forming).
The API to switch between different use cases is detailed in Section 3.2.
Table 2.2 lists the hardware conguration of the microphones, DSP features, and the stream
channel mapping per audio use case.
Microphones DSP Features Audio Channel
Use Case Rear Middle Front AEC Array Left Right
Direct Record Unused Unused Used No No Front Mic Front Mic
Live Record Unused Used Used No No Middle Mic Front Mic
Personal Record Used Used Unused No Yes Processed Processed
Table 2.2: Audio Use Case Details
Denitions of terms are as follows:
AEC Active echo cancellation. Reduces feedback from speaker playback in recording.
Array Array processing. Also known as beam-forming.
Left Left channel of USB input stream.
Right Right channel of USB input stream.
Processed Multiple microphones are sampled and processed to form a single channel stream.
2.2.7 Orientation Sensor
M400C has an integrated orientation sensor with separate accelerometer, gyro, magnetometer
functions. Each function reports (X, Y, Z)values. The sensor also reports the device orienta-
tion using quaternion components (W, X, Y, Z). 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.
7 Revision 7 Vuzix Corporation

Figure 2.1: Orientation Sensor Axes
2.2.8 Status LED
The status LED illuminates while M400C is operating to indicate that the device is powered and
functional. Table 2.3 enumerates the different LED states.
Color Pattern Description
Green Solid Normal operation
Yellow Solid Waiting for video data
Red 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
specic 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. Note that the autorotation
algorithm may produce incorrect results if the user’s head is not relatively level to the ground.
Table 2.4 describes the effect of the Autorotation and Force Left Eye commands during use.
Autorotation
0 1
Force Left Eye 0 Left eye mode Automatic
1 Right eye mode Automatic
Table 2.4: Autorotation and Force Left Eye settings
8 Revision 7 Vuzix Corporation

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).
Button Short Press Long Press
Front Right arrow (0x4F) Up arrow (0x52)
Middle Left arrow (0x50) Down arrow (0x51)
Back Enter (0x28) Escape (0x29)
Side F16 (0x6B) Sleep (0xF2)
Table 2.5: Default Key Codes
2.3.3 Non-Volatile Memory
An on-board non-volatile memory stores certain settings so that they will be remembered even
when M400C is unplugged from the host device. The settings stored in memory are:
• Display brightness
• Autorotation mode
• Left eye mode
• Button key codes
9 Revision 7 Vuzix Corporation

Chapter 3
USB API
3.1 Vuzix USB API
3.1.1 Description
M400C enumerates two separate internal devices that implement the Vuzix USB API. The rst 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.
Vuzix products implementing the Vuzix USB API can be controlled using a product-specic
set of commands. The protocol uses control transfers on endpoint 0 of the device to issue com-
mands, read, or write from the device. The format of the 64B payload depends on the specic
command. A detailed description of the API is documented in Vuzix USB API.
The following sections provide a list of the supported commands on this product, per inter-
nal device. The send and receive packet information shows the contents of the PIDCOMMANDPKT
object, in the following format:
0123 4 567 8 910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
repid pktcmd pktdata …
The pktdata eld is a union of many different structs. The specic struct that is used depends
on the packet direction and the command used. The PIDCOMMANDPKT struct is 64 bytes in length,
which is the maximum control transfer size for USB full-speed devices. The rst two bytes will
always be repid and pktcmd, respectively.
10

3.1.2 Supported Commands
Main Microcontroller
Direction Description OpCode Action
Read Get Version 0x03 Get rmware version
Write Restore Defaults 0x10 Restores factory defaults
Write Brightness Set 0x23 Set the illumination
Read Brightness Get 0x24 Get the illumination
Write Force Left Eye Set 0x30 Force left eye orientation
Read Force Left Eye Get 0x31 Get forced orientation
Write Autorotation Set 0x36 Enable autorotation
Read Autorotation Get 0x37 Get autorotation
Write Write Button Key Codes 0xB0 Set button function
Read Read Button Key Codes 0xB1 Read button function
Read Error Report 0xF6 Send error bitmap
Table 3.1: Vuzix Main Microcontroller USB API Commands
Secondary Microcontroller
Direction Description OpCode Action
Read Get Version 0x03 Get rmware version
Read/Write Touchpad Orientation 0x39 Set orientation
Read/Write Touchpad Enable 0x73 Set touchpad enable
Table 3.2: Vuzix Secondary Microcontroller USB API Commands
11 Revision 7 Vuzix Corporation

3.1.3 Get Version
Description
Read the version of the device and its subsystems.
Send Packet
0123 4 567 8 910 11 12 13 14 15
0x02 0x03
Receive Packet
0123 4 567 8 910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0x01 0x03 USB_vmajor USB_vminor
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
ProductID Subsys_HWversion Subsys_vmajor Subsys_vminor
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
Tracker_HWversion Tracker_SWversion
Fields
USB_vmajor Supported USB revision (major version)
USB_vminor Supported USB revision (minor version)
ProductID Returns 9
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)
12 Revision 7 Vuzix Corporation

3.1.4 Restore Defaults
Description
Reset NVRAM contents to factory settings. Will erase any customization to auto-rotation, orien-
tation, brightness, and button key codes.
Send Packet
0123 4 567 8 910 11 12 13 14 15
0x02 0x10
Receive Packet
0123 4 567 8 910 11 12 13 14 15 16
0x01 Status
Fields
Status Returns 0x10 on success, 0x8B on error
13 Revision 7 Vuzix Corporation

3.1.5 Brightness Set
Description
Set display panel brightness level. Saved to non-volatile memory.
Send Packet
0123 4 567 8 910 11 12 13 14 15 16 17 18 19 20 21 22 23
0x02 0x23 value
Fields
value Allowed values:
0: Turn off panel
1–255: Brightness level 1–100%
Receive Packet
0123 4 567 8 910 11 12 13 14 15 16
0x01 0x23
14 Revision 7 Vuzix Corporation

3.1.6 Brightness Get
Description
Return the display panel brightness level.
Send Packet
0123 4 567 8 910 11 12 13 14 15
0x02 0x24
Receive Packet
0123 4 567 8 910 11 12 13 14 15 16 17 18 19 20 21 22 23
0x01 0x24 value
Fields
value Return values:
1–255: Brightness level
15 Revision 7 Vuzix Corporation

3.1.7 Force Left Eye Set
Description
Force the device to operate in left eye mode. Rotates the display 180 degrees. If Auto Rotate is
set, this setting is overridden. Saved to non-volatile memory.
Send Packet
0123 4 567 8 910 11 12 13 14 15 16 17 18 19 20 21 22 23
0x02 0x30 value
Fields
value Allowed values:
0: Left eye mode is active
1: Default behavior, right eye mode is active
Receive Packet
0123 4 567 8 910 11 12 13 14 15 16
0x01 0x30
16 Revision 7 Vuzix Corporation

3.1.8 Force Left Eye Get
Description
Return the state of the force left eye override.
Send Packet
0123 4 567 8 910 11 12 13 14 15
0x02 0x31
Receive Packet
0123 4 567 8 910 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
17 Revision 7 Vuzix Corporation

3.1.9 Autorotation Set
Description
Control the status of the autorotation feature. Saved to non-volatile memory.
Send Packet
0123 4 567 8 910 11 12 13 14 15 16 17 18 19 20 21 22 23
0x02 0x36 value
Fields
value Allowed values:
0: Autorotation disabled, use the Force Left Eye command to set the device orientation
1: Autorotation enabled
Receive Packet
0123 4 567 8 910 11 12 13 14 15 16
0x01 0x36
18 Revision 7 Vuzix Corporation

3.1.10 Autorotation Get
Description
Return the status of the autorotation feature.
Send Packet
0123 4 567 8 910 11 12 13 14 15
0x02 0x37
Receive Packet
0123 4 567 8 910 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
19 Revision 7 Vuzix Corporation
Table of contents
Other Vuzix Smart Glasses manuals

Vuzix
Vuzix Blade 494 User manual

Vuzix
Vuzix M400 Installation instructions manual

Vuzix
Vuzix BLADE 2 User manual

Vuzix
Vuzix M4000 User manual

Vuzix
Vuzix Smart Swim User manual

Vuzix
Vuzix M100 User manual

Vuzix
Vuzix Blade User manual

Vuzix
Vuzix M400 User manual

Vuzix
Vuzix M300 User manual

Vuzix
Vuzix M300 User manual

Vuzix
Vuzix SHIELD 492 User manual

Vuzix
Vuzix STAR 1200XLD User manual

Vuzix
Vuzix Star 1200 User manual

Vuzix
Vuzix Wrap 1200DX User manual

Vuzix
Vuzix Smart Swim SS-147B User manual

Vuzix
Vuzix M300 User manual

Vuzix
Vuzix M300XL User manual

Vuzix
Vuzix CamAR User manual

Vuzix
Vuzix Blade User manual

Vuzix
Vuzix Blade User manual