I recieved my Nreal Air Thursday 08 2022. Imported from US as it’s not sold yet in Germany. Bought from Amazon US (amazon.com).
Tech inspection ¶
Connected the device with the provided USB-C cable to my laptop (hardware). the operating system is Arch Linux (xserver+i3).
Device ¶
lsusb output lists 3 additional devices
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 3318:0424 Nreal Nreal Air
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
getting more information about the device
lsusb -s 003:002 -v
Bus 003 Device 002: ID 3318:0424 Nreal Nreal Air
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x3318
idProduct 0x0424
bcdDevice 0.01
iManufacturer 1 Nreal
iProduct 2 Nreal Air
iSerial 3 A00011:14:14
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0121
bNumInterfaces 6
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 0
iInterface 0
AudioControl Interface Descriptor:
bLength 10
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 0x0047
bInCollection 2
baInterfaceNr(0) 1
baInterfaceNr(1) 2
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bNrChannels 2
wChannelConfig 0x0003
Left Front (L)
Right Front (R)
iChannelNames 0
iTerminal 0
AudioControl Interface Descriptor:
bLength 10
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 2
bSourceID 1
bControlSize 1
bmaControls(0) 0x03
Mute Control
Volume Control
bmaControls(1) 0x00
bmaControls(2) 0x00
iFeature 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 3
wTerminalType 0x0402 Headset
bAssocTerminal 4
bSourceID 2
iTerminal 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 4
wTerminalType 0x0402 Headset
bAssocTerminal 3
bNrChannels 1
wChannelConfig 0x0001
Left Front (L)
iChannelNames 0
iTerminal 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 5
bSourceID 4
bControlSize 1
bmaControls(0) 0x03
Mute Control
Volume Control
bmaControls(1) 0x00
iFeature 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 6
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 5
iTerminal 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
AudioStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 1
bDelay 1 frames
wFormatTag 0x0001 PCM
AudioStreaming Interface Descriptor:
bLength 11
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bNrChannels 2
bSubframeSize 2
bBitResolution 16
bSamFreqType 1 Discrete
tSamFreq[ 0] 48000
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 13
Transfer Type Isochronous
Synch Type Synchronous
Usage Type Data
wMaxPacketSize 0x00c0 1x 192 bytes
bInterval 1
bRefresh 0
bSynchAddress 0
AudioStreaming Endpoint Descriptor:
bLength 7
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x01
Sampling Frequency
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0000
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
AudioStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 6
bDelay 1 frames
wFormatTag 0x0001 PCM
AudioStreaming Interface Descriptor:
bLength 11
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bNrChannels 1
bSubframeSize 2
bBitResolution 16
bSamFreqType 1 Discrete
tSamFreq[ 0] 48000
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 13
Transfer Type Isochronous
Synch Type Synchronous
Usage Type Data
wMaxPacketSize 0x0068 1x 104 bytes
bInterval 1
bRefresh 0
bSynchAddress 0
AudioStreaming Endpoint Descriptor:
bLength 7
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0000
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 27
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 4
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 27
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x07 EP 7 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 5
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 27
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x88 EP 8 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x09 EP 9 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Screen ¶
Xrandr output:
DP1 connected (normal left inverted right x axis y axis)
1920x1080 60.00 +
I can turn it on using xrandr from terminal or from arandr GUI. it supports only one mode with one resolution and one refresh rate.
DP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 120mm x 70mm
1920x1080 60.00*+
what does the eDID look like
hexdump -C /sys/class/drm/card0-DP-1/edid
00000000 00 ff ff ff ff ff ff 00 3a 4c 32 31 00 88 88 88 |........:L21....|
00000010 08 1c 01 03 80 0c 07 78 0a 0d c9 a0 57 47 98 27 |.......x....WG.'|
00000020 12 48 4c 00 00 00 01 01 01 01 01 01 01 01 01 01 |.HL.............|
00000030 01 01 01 01 01 01 98 3a 80 50 70 38 aa 40 20 10 |.......:.Pp8.@ .|
00000040 95 00 80 38 74 00 00 1e 98 3a 80 50 70 38 aa 40 |...8t....:.Pp8.@|
00000050 20 10 95 00 80 38 74 00 00 1e 00 00 00 fd 00 32 | ....8t........2|
00000060 82 14 3c 3c 00 0a 20 20 20 20 20 20 00 00 00 fc |..<<.. ....|
00000070 00 6e 72 65 61 6c 20 61 69 72 0a 20 20 20 00 5e |.nreal air. .^|
00000080
Audio device ¶
I’m a bit surprised as pulseaudio doesn’t see the device! and can’t find it in Pavucontrol
➜ cat /proc/asound/cards
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xec340000 irq 140
Pictures ¶
Couple things to note:
- in the picture the display looks curved. in reality it’s straight not curved.
- in the pictures it appears out of focus. in reality some parts of the picture (mainly far corners) feels out of focus the rest if fine. and I found it changes when you move the device moves up or down.
How does it work? ¶
From what I’m seeing.
- there is a small display at the top for each eye
- the display is horizontal facing down
- the top of the screen is near my eyes so rotating the glasses away from you makes the display in the correct orientation
- there is a glass from top near the eye bottom away to the edge fo glasses bottom. I guess this reflects the screen from one side. (one way mirror)
- the image falls on another glass infront of your eyes.
How does it feel? ¶
When looking at the displayed picture it feels really large looking at the ceiling with it feels like the cinema display. my eyes moves the same way to focus. with the center feels more focused and the edges and corners abit out of focus. my eye needs to move to look at the corners.
Devices ¶
- Worked out of the box with Valve Steam deck
- Worked with my laptop
- Didn’t work with my PC (same OS setup). as I connected it to the front USB-C of a lenovo usb dock. I guess I’ll need HDMI to usbc adapter.
Software ¶
-
Nebula is available for mac os https://www.nreal.ai/nebula
-
I tried it on a Macbook pro M1 machine. it’s a simple application where you can select if it’s:
- 1, 2, 3 screens.
- how far are they close, medium, far
- reset their position to face you in case your orientation changed
-
I wanted to know what’s inside it. downloaded it and extracted the dmg
pacman -S p7zip
7z x nebula.dmg
- the file structure
.
├── Applications
├── [HFS+ Private Data]
└── Nebula for Mac.app
└── Contents
├── CodeResources
├── _CodeSignature
│ └── CodeResources
├── Frameworks
│ ├── GameAssembly.dylib
│ └── UnityPlayer.dylib
├── Info.plist
├── MacOS
│ └── Nebula
├── PlugIns
│ ├── lib_burst_generated.bundle
│ ├── libew.bundle
│ │ └── Contents
│ │ ├── _CodeSignature
│ │ │ └── CodeResources
│ │ ├── Info.plist
│ │ ├── MacOS
│ │ │ └── libew
│ │ └── Resources
│ │ ├── default.metallib
│ │ ├── SettingViewController.nib
│ │ └── TmpWindow.nib
│ ├── libnr_api.dylib
│ ├── libota.dylib
│ ├── libth.bundle
│ │ └── Contents
│ │ ├── _CodeSignature
│ │ │ └── CodeResources
│ │ ├── Info.plist
│ │ ├── MacOS
│ │ │ └── libth
│ │ └── Resources
│ │ └── SensorsAnalyticsSDK.bundle
│ │ ├── sa_autotrack_gestureview_blacklist.json
│ │ ├── sa_autotrack_viewcontroller_blacklist.json
│ │ ├── sa_mcc_mnc_mini.json
│ │ ├── sa_visualized_path.json
│ │ ├── sensors_analytics_flow.json
│ │ ├── sensors_analytics_node.json
│ │ ├── sensors_analytics_task.json
│ │ └── zh-Hans.lproj
│ │ └── Localizable.strings
│ └── libvdh.bundle
│ └── Contents
│ ├── _CodeSignature
│ │ └── CodeResources
│ ├── Info.plist
│ ├── MacOS
│ │ └── libvdh
│ └── Resources
│ ├── Assets.car
│ └── MenuBarViewController.nib
└── Resources
├── Data
│ ├── app.info
│ ├── boot.config
│ ├── globalgamemanagers
│ ├── globalgamemanagers.assets
│ ├── globalgamemanagers.assets.resS
│ ├── il2cpp_data
│ │ ├── Metadata
│ │ │ └── global-metadata.dat
│ │ └── Resources
│ │ ├── mscorlib.dll-resources.dat
│ │ ├── Newtonsoft.Json.dll-resources.dat
│ │ └── System.Data.dll-resources.dat
│ ├── level0
│ ├── level0.resS
│ ├── Resources
│ │ └── unity_builtin_extra
│ ├── resources.assets
│ ├── resources.assets.resS
│ ├── RuntimeInitializeOnLoads.json
│ ├── ScriptingAssemblies.json
│ ├── sharedassets0.assets
│ ├── sharedassets0.assets.resS
│ └── StreamingAssets
│ └── UnityServicesProjectConfiguration.json
├── DefaultPreferences.plist
├── MainMenu.nib
│ ├── designable.nib
│ └── keyedobjects.nib
├── PlayerIcon.icns
└── unity default resources
32 directories, 56 files
Some notes:
- I see Unity library in the frameworks directory
Using it ¶
For gaming with Steam deck ¶
- It worked without any manual steps. when connected it will turn on the audio will come out of it’s speakers
- Played “Skull - the hero slayer” couple times
- The longest and last session (30 minutes) caused pain in the back of my eyes and dizziness
- The screen is too near the eye that I can’t see all of it. adjusting it to see the top will push the bottom out of the view
- Corners were too out of focus that I can’t see the bottom left corner clear enough (the health bar)
- Watched youtube video on chrome it was nice I liked this use case
- Tried to watch anime from crunchy roll on google chrome. worked nicely too. but subtitle was glowing too much like a case of astigmatism.
With Nebula + Macbook pro M1 ¶
- The software is beta
- It’s impressive to see multiple screens suspended in the air
- screens are vibrating (pulsating) I think it correlates with my blood pulse. (same happened with me and my wife experiment)
With Lenovo thinkpad X1 carbon laptop ¶
- Speaker didn’t work, wansn’t detected
- No software to switch mode to multiple screens so I was stuck with one screen near my face like steam deck.
- The screen is too out of focus in the corners so I can’t see the window title, the command prompt when I have full screen terminal.
- Text is glowing. like having an extreme case of astigmatism. can’t use it for coding
With my phone ¶
- One plus nord phone is not supported. so I can’t install the app.
- I think it’s a hardware problem my phone lakes a feature needed for external screens
Returning it ¶
- I decided to return it
- From all the use cases the only one that works for me is watching videos on steam deck. all other usecases are too problematic
- After having that headache and dizziness I’m afraid of using it again.