3/19/2016

HDMI, its not the Cable

LCD computer monitors often double as a video monitors with many choices of Input connector, when switching from DVI to HDMI, often the fonts are [halo'ed] [strobe'd] or too blurry or hard to read. Its usually not the cable, and its almost never documented in the User's Guide. Here's how to fix that.

LCD monitors are often tuned at the factory with several presets, in addition to many manual settings available in on screen displays. The default presets overrides many of the manual settings or multiplies their effect with no onscreen indication they are engaged -- other than "unintended" signal degradation.

The presets for the DVI connector are different than the presets for the HDMI connector, because it is assumed when using the DVI connector a full resolution signal with no need for sharpening and color correction will be input.

The presets for the HDMI connector are different than the presets for the DVI connector, because it is  assumed when using the HDMI connector a low resolution signal with need for sharpening and color correction will be input.

The end result is if  the presets are not changed or disabled, when moving a computer video signal from the DVI connector to the HDMI connector, the signal will be -
  • [incorrectly] sharpened [generating a "false" alias pattern - commonly called a "Halo distortion"]  around Text
  • [incorrectly] color corrected [generating a "false" color image - commonly called "Hue distortion"] over Dialog boxes
In the gaming community this is commonly called the "Samsung Effect" to quite a bit of amusement. It is considered a right of passage for "Noobs" to figure out. Then understand the directions to disable the preset for the HDMI input. The procedure remains an exercise of discovery on other vendors products.

Basically to disable the HDMI preset and restore the computer video signal, the Remote must be used to -

enter the [OSD] main menu
enter the [Inputs] sub menu
enter the [Edit Name] sub menu, by scrolling below the [Source List] sub menu
enter the [HDMI] sub menu, by scrolling below the [PC][DVI][AV][Component] sub menus
select the [PC] or [DVI PC] [>-preset-<] from the possible choices listed below:

----
VCR
DVD
Cable STB
Satellite STB
PVR STB
AV Receiver
Game
Camcorder
PC
DVI PC
DVI
TV
IPTV
Blu-ray
HD DVD
DMA

The default '----' and all but the [PC] or [DVI PC] profile will impose a starting preset which will be applied and added to the base settings of the manual controls.. reducing and defeating their purpose.

Because of the seeming "conflict" with reason and personal opinion, many assume this right of passage to be a hazing attempt or 'practical joke'. Unfortunately it is not.

Also, while performing the steps to achieve a visual outcome, there is no feedback from the system to indicate a change has occurred to the presets, until the final step is executed to confirm the "Name Change" even though the "Edit Name" menu is not actually used to "Change Names" but is in reality a "baseline preset" tool.

While scrolling through the presets called "Names" the video signal will not visually begin changing back to its unmolested form, until either the [PC] or the [DVI PC] preset is highlighted -- the appearance of the signal on the video monitor will visually "Snap" into perfect clarity and color gamut.

I have no means to access and compare these "presets" to be sure, but it appears only the [PC] and [DVI PC] are appropriate for computer HDMI signal inputs, the rest are so distorted as to make human comparisons unreliable.

There are "many" forums and blog postings suggesting reducing resolution, using different cables, swapping video cards, adjusting brightness and contrast, even reducing "sharpness" -- none of these will defeat the built-in presets, it is presumed a good deal of expense has been rendered by "Noobs" attempting to resolve this problem.

This is one procedure when moving from using DVI to HDMI connectors on your LCD monitor you should look for, in particular for Samsung LCD monitors and also on many other vendors LCD monitors they are known to be excrusiatingly obtuse and arcane to debug. Which is one reason Samsung LCD monitors are held in high regards.. because the procedure is fairly well known to the indoctrinated.

It remains unfortunately an "urban legend" which has proved to be true.

Uber HDMI cables and settings can build upon the performance of the original equipment only once its unmolested signal is actually being displayed and not overtly "corrected".


3/18/2016

NUC, IDE to AHCI without reinstalling


The Intel NUC is an excellent platform to receive a backup image of an XP computer. Provided its one of the older NUCs like the DCCP847DYE. With 4 GB of ram and a Samsung EVO850 SSD it can boot in IDE or AHCI mode. Here's how to switch from IDE to AHCI without reinstalling.

First you have to download the AHCI drivers from Intels website for the NUC and extract them.

Then you need to know precisely which PCI VEN and DEV is associated with the AHCI in the NUC. The best way is to temporarily enter the BIOS with F2 then switch the controller into AHCI mode, and use a USB install of a newer operating system with native support for AHCI, such as Windows 7.. temporarily, just so that after the install the Hardware Ids can be observed by entering the Device Manager and right clicking on the [ Standard AHCI 1.0 Serial ATA Controller ] to obtain Properties and Details for the installed device. You will notice that the PCI VEN and DEV id is different from the one presented when it is in IDE mode.

AHCI mode => [ PCI\VEN_8086&DEV_1E03&SUBSYS_20448086&REV_04 ]

Then you will need to open the [ iaAHCI.inf ] driver installation information file (Notepad++ is a nice tool for viewing inf files) in the extracted NUC drivers directory and match the PCI VEN and DEV id up with a precise "Driver Name"

-- which in this case is

[ Intel (R) 7 Series Chipset Family SATA AHCI Controller ]

Finally you will want to put the NUC back into IDE mode using the F2 switch at boot, image the system with the backup image taken from the original XP hard drive from the old system (Macrium Reflect is a nice tool for this purpose) -- and then start the XP Device Manager -- use the [ View ] menu to change the display of devices to "By Connection" so that the precise Controller driver servicing the Samsung EVO850 SSD can be distinguished from its secondary. Right click that controller and choose to [ Update ] the device driver from a Local Source, Have Disk -- Browse to the location of the extracted NUC AHCI drivers and choose the iaAHCI -- then from the "List" of choices -- select (only)

[ Intel (R) 7 Series Chipset Family SATA AHCI Controller ]

Disregard any warnings about the selection of the driver and confirm the choice.

Then shutdown the system

Reboot and press F2 to enter the Bios and switch the controller operating mode back to AHCI.

STOP 0x7B should not appear

The system will detect the new controller and devices attached to it and complete any post install setups then request permission to restart.

XP does not have the TRIM command, so you will want to periodically run the Samsung Magician toolkit to perform maintenance. The latest Magician versions now support the Samsung EVO850 SSD.

Should the "wrong" driver be chosen for Updating -- the system can be recovered by changing the controller back to IDE mode in Bios and choosing the "last known good configuration" to boot from when starting Windows.

Although this example is for the DCCP847DYE, it can be generalized to most situations in which it is desired to move from IDE mode to AHCI mode, provided you have supporting drivers and backup images from which to provision and recover should something go wrong.

You might also want to use the [ GhostBuster ] ghosted driver remover to automatically scan for and selectively remove any installed but stale drivers on the legacy image after its installed in its new home. I would steer clear of any monitors or printer drivers for devices that are merely temporarily disconnected.

3/15/2016

Kangaroo PC, downgrade to Win8.1

Kangaroo PC 2GB/32GB comes with Win10, if you want to downgrade it to Windows 8.1 here's how to do that. The KPC is Secure boot by default, so first power up and press F2 to get into UEFI and disable Secure Boot. (as always you accept full risk for this, you need a valid windows 8.1 license key, and you could brick the thing.. so consider the consequences)


1. Shrink the existing Win10 x64 partition using the Disk Management tool

2. Prepare a Fat32 UEFI bootable USB stick with Win8.1 x64 and insert it into the USB2.0 slot

3. On power up, press F10 to get to the Kangaroo boot menu, it will recognize the USB stick as bootable

4. Create a new partition and install to the free space, ignore the preference for more than 10GB storage

5. Download the SC_CHT_Win8.1_x64_Drivers_01282016.zip Atom CherryTrail-T driver pack from Intel

6. Extract it on to a USB stick and insert it into the USB2.0 slot

7. Run Setup.exe to install all the drivers and reboot

All of the devices should be found and installed.


Classic Shell can make the user interface more familar for some people.


Logitech M557 (12 mos batt life) Bluetooth Mouse pairs, reconnects after sleep quite well.

The Fingerprint reader is also supported and merely requires using the -
[ PC Settings ] [Accounts] [Sign-in options] [Fingerprint] wizard to take a few scans of one or more fingerprints to serve as your password when logging in.

Personally I also prefer to use Palemoon x32 (instead of Firefox) since the user interface is simpler and predates that of the Australias change yet still runs many of the popular Add-ons such as UblockOrigin and Fireshot.

Minitool partition manager can perform an offline delete, move and resize of the Windows10 and Windows 8 partitions if you find you don't need Windows 10. VisualBCD can clean up the boot menu such that it only boots into reFind or Windows 8.

Irfan viewer and MPC-HC x64 are also nice lightweight replacements for some of the heavier, slower native offerings.




3/10/2016

Zeo Mobile, chasing shadows

The Zeo has an FTDI usb chip and when it is plugged into a PC it enumerates and installs USB drivers and a COM port. I happen to use FTDI serial cables.. so it found a compatible driver immediately. This seemed to be backed up by a much more thorough and clear photo spread of the internals of a Zeo Mobile.

 

Richard Long's - Picasa Blog (Zeo Teardown)

The main MCU processor is also clearly indicated as a Silicon Labs Gecko with 128 MB Flash.

The tech guides for the chip indicate it can be flashed in one of two modes over USB or hardwired UART, and in collaborative boot mode, or destructive [overwrite] bootloader mode. The latter would make more sense, and there are no prompts while it is powering up. With Bluetooth Serial port emulation it might even update over wireless.

Its hard to discern how many generations of the hardware there were.. at a guess three.

One user reported using a Mac OSX kernel extension to perform a firmware upgrade, but it wasn't clear if he used a bedside unit or mobile unit. When asked later he said it was [so long ago] he really couldn't recall details.

Test command modes were reported in some released documentation, but they were simply listed, and not described or explained. It is assumed they were for factory or development purposes.

The goals have not changed however, simply to use it as made, not to modify it.. but getting access to raw sampling data perhaps with one of the test commands would be really nice.


Looking at one aspect, I also get curious about other aspects.

This is a [really] long interview with Ben Rubin and how Zeo got started and built (the science, the concepts, the product, the company) some of the details might really be interesting: (the video may or may not work, but the long transcript is still readable)

Zeo’s Founder On How To Build A Business That Makes Physical Products

The Best site description of how to Mod the Zeo Beside unit in German.. its useful to Zeo Mobile users only in that you then know what [does not apply] to the Zeo Mobile units.

But it is really good.

It is really brief.

And it has good photos and graphics.

ZEO Sleep Manager - Schlafphasenwecker: Modding


This is a Patent that appears coencidentally to have been granted very close to the time Zeo commenced shutting down.

US Patent 20130127708 : Cell-phone based wireless and mobile brain-machine interface

In which (based on all that is publically known about the last Zeo Mobile Pro unit) it appears very similar, the Patent was assigned to The Regents Of The University Of California

The major difference being this patent seems to be more broad than just monitoring 'sleep' but it did use FFT transforms to reduce data into signal patterns that could be interpreted.

It describes a device to be used with a mobile cell phone over Bluetooth, and a remote "sensor and data processing headband" which would transform opamp captured signals with a 12 bit ADC into digital signals.

The pictures of the example device also look somewhat similar.




3/06/2016

Zeo Mobile, where leviathan sleeps

Serendipity cannot be summoned, one can only be shown the unknown. While looking at the model for protecting apk sqlite databases.. something unexpected happened.


I noticed a toggle for [Bug report shortcut] on the Power menu (this pops up when you hold the Power button too long) this feature "Adds" an option to immediately [dump] the logs to an email and a screenshot then offers to "Share" the content with an app or email it to you.

Android really does not have a documented method for generating logs, in fact its a somewhat "heated" debate between external developers and the Android team developing the APIs as displayed in this forum article:

READ_LOGS permission is not granted to 3rd party applications

Now that sounded a lot like the decision to [hide] or [protect] databases from 3rd party applications.. which if you recall merely required in development the apps have the [same signatures].

So how does an apk get its signature?

It gets it as the final step in the build system using the authors keystore to create a directory in the APK called the META_INF

There are two steps, development and release.. so different signatures are used.

The apk is just a "zip file" with a funky extension.. on windows 7zip will open it and show you stuff.

If you delete the META_INF and then resign it.. it will have your signature.
cd C:\Program Files\Java\jdk1.6.0_35\bin>
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -keysize 2048 -validity 10000
keystore password: android
key password for <androiddebugkey>: <return, same>

jarsigner -keystore debug.keystore -storepass android Zeo1.2.7.apk androiddebugkey <return>
<..no feedback.. but works.. verified with 7zip looking at META-INF>
Then the original apk installed can be deleted from the Android device and the [resigned] version installed, keep in mind it will "collide" with the other apk if it is not un-installed.. in fact it will assume this is an "Update" and try to patch the original.. but fail. So you have to not only remove the icon from your launchers page, but "really" uninstall the original apk.

My [thinking] was eventually we might enable side loading, or install from 3rd party apps.. then resign with personal signatures.. and resign either an existing 3rd party app.. or something new with the same key.. [in theory] if what I read is correct.. that would allow the other apk to access the /data/zeo/zeo.db database direct and you could periodically upload it.. but more on that later.. here's the [unexpected part]

The reason such a procedure [exists] to resign a compiled app, is to transition between development and released versions for developers.. and some people use that signature to pseudo enable/disable unsupported "logging" methods.. at least way back in ICS - Ice Cream Sandwidth "days" which .. happens to coencide with the original "target" for the MyZeo application.

I was bored..

I noticed this toggle and decided to enable it and see what it would do.

[.. answer.. a whole lot more than I thought ! ]

I've got to run.. and I'll update this posting later.. but here's a snap shot of what rolled into my emailbox

03-06 16:09:40.060 16981 23439 V BluetoothClient: Successfully connected to RFCOMM channel socket : Zeo with createInsecureRfcommSocket
03-06 16:09:40.061 16981 23439 D Headband: 188979628 Disconnect in headband.
03-06 16:09:40.126 16981 23439 V Headband: Update sleep record end reason with disconnected because headband is not connected.
03-06 16:09:40.151 16981 23439 V BluetoothClient: Successfully connected... starting thread.
03-06 16:09:40.167 16981 23441 V Headband: Attempting to upload headband state to myzeo.com
03-06 16:09:40.167 16981 23441 I Headband: Not uploading headband state when user not logged into myzeo.com
03-06 16:09:40.168 16981 23442 V BluetoothClient: Input thread started.
03-06 16:09:40.181 16981 23442 V Headband: Received message: com.myzeo.android.headband.ZeoMessage[mCreatedOn=Sun Mar 06 16:09:40 CST 2016, mIdentifier=1196641608, mCrc=52428, mVersion=2, mType=MESSAGE_TYPE_STATE_REPORT, mSequenceNumber=57, mSize=16, mAckRequest=0, mContents=com.myzeo.android.headband.StateReportMessage[mActiveForced=false, mBluetoothLocked=true, mDemoMode=false, mDocked=true, mOnHead=false, mRequiresPin=false, mWasCharged=true, mWasQueried=false, mHeadbandVoltage=233, mHeadbandVoltageStatus=1, mLastAlarmReason=0, mLastAlgorithmMode=0, mSensorUseSeconds=56893]]
03-06 16:09:40.181 16981 23442 V Headband: Handling state report
03-06 16:09:40.181 16981 23442 V Headband: Attempting to send message : com.myzeo.android.headband.ZeoMessage[mCreatedOn=Sun Mar 06 16:09:40 CST 2016, mIdentifier=1196641608, mCrc=25978, mVersion=2, mType=MESSAGE_TYPE_COMMAND_REQUEST, mSequenceNumber=14, mSize=4, mAckRequest=0, mContents=com.myzeo.android.headband.CommandRequestMessage[mCommand=8]]
03-06 16:09:40.219 16981 23442 V BluetoothClient: Sending data over bluetooth
03-06 16:09:40.225 16981 23439 D Headband: 188979792 Successfully connected to Zeo
03-06 16:09:40.228 16981 23444 V Headband: Attempting to upload headband state to myzeo.com
03-06 16:09:40.228 16981 23444 I Headband: Not uploading headband state when user not logged into myzeo.com
03-06 16:09:40.362 16981 23439 V HeadbandService: Trying to add headband: com.myzeo.android.headband.Headband[name=Zeo, address=4C:98:EF:00:DE:EC, connected=true, mCommFailures=0]
03-06 16:09:40.363 16981 23445 V Headband: Attempting to upload headband state to myzeo.com
03-06 16:09:40.363 16981 23445 I Headband: Not uploading headband state when user not logged into myzeo.com
03-06 16:09:40.364 16981 23439 V HeadbandService: Adding active headband: com.myzeo.android.headband.Headband[name=Zeo, address=4C:98:EF:00:DE:EC, connected=true, mCommFailures=0]
03-06 16:09:40.386 16981 23442 V Headband: Received message: com.myzeo.android.headband.ZeoMessage[mCreatedOn=Sun Mar 06 16:09:40 CST 2016, mIdentifier=1196641608, mCrc=19818, mVersion=2, mType=MESSAGE_TYPE_REPORT_SLEEP, mSequenceNumber=58, mSize=1144, mAckRequest=0, mContents=com.myzeo.android.headband.ReportSleepMessage[mReport=com.myzeo.android.headband.SleepReport[mDisplayHypnogramStartTime=1455700200000, mAwakenings=4, mTimeInDeep=88, mTimeInLight=332, mTimeInRem=211, mTimeInWake=29, mVoltageBattery=234, mUserInitiated=false, ]]]
03-06 16:09:40.386 16981 23442 V Headband: Handling sleep report.
03-06 16:09:40.389 16981 23442 D Headband: 188979956 Found offset for headband: -87

[Update] end of night...

Got very close to the final goal.. but not there yet. It seems there are [two] requirements for shared database access. (1) same signing signature (2) same userID shared between applications

android:sharedUserId
The name of a Linux user ID that will be shared with other applications. By default, Android assigns each application its own unique user ID. However, if this attribute is set to the same value for two or more applications, they will all share the same ID — provided that they are also signed by the same certificate. Application with the same user ID can access each other's data and, if desired, run in the same process.
Re-signing the apk appears a trivial thing that happens all the time, because the signing certificates expire, the Zeo app is set to expire in in the year 2039... so not an impending y2k.. but hence why the method must exist.

Assigning a unique "sharedUserID" was a surprise.. but equally easy to do.. in fact it may not even be necessary.. but I did test the motions.. and with the new found [debug] logging.. I could verify that it did indeed work. I set it to "com.myzeo" however it appears the assignment follows a predictable pattern.. so it appears unnecessary as long as you know what it will be.
suid,2000,android.uid.shell
suid,10001,android.uid.calendar
suid,10249,com.myzeo
The final test of course will be creating a test app, or service that can copy the the database to a more accessible location on command.

If this works.. it was quite a lesson in apk signatures, debug logging and shared database access.

I can't think of a way of [ever] creating a new apk and uploading it to the Google Play store or Amazon App store that has a common signature.. it would just be wrong. And there is no way to get a companion app signed by the same private key used to sign the existing apk in the Google Play store.

So this will always require enabling [settings > security > Allow installation of apps from sources other than the Play store] but the "big win" -- if it works -- will be [root-ing] the device will no longer be necessary.

The native apk can continue to provide the service it was designed to provide and the user will be able to access the full sqlite.db file the apk creates.

Unlike the former .DAT files of the bedside unit (which I have never had access to..) the sqlite database format is well known and accessible using many free and commerical tools.

I hope it works.

I think the [debug] logging might eventually turn out to be more beneficial since that may help understand the Bluetooth protocol and lead to native apps for other platforms to do similar things to what the original apk did on Android.

[another random thought..]

The debug log output indicates the Zeo app is trying to upload the data to myzeo.com but does not because the user is not signed up or something.

AppleTV version2/3 does not officially support a Plex application for playing streaming content from a Plex media server.. this was brought into the fold with AppleTV version 4

But that didn't prevent some resourceful people from developing a by-pass. They configured the AppleTV version 2/3 to use  a different DNS server on the local network which intercepted calls for the Trailers website and directed those requests to a Plex media server that could service the Trailers request and present a Plex media server experience.

I think it would be overreaching to run down that path but its a thought.

Really its probably more interesting to make native apps for more platforms.

[ Another thought.. that Red LED problem ]

If the Red LED represents something, or is the result of something in the android app.. I have hopes that the 'Verbose' debug logging will reveal what it is.. and possibly suggest a solution.

One of the things the [Diagnostics] page in the app does is collect state data.. but it doesn't save it.

The debug logging saves the data and can be referred to later to correlate the behavior.

CyberMike confirmed the Zeo has been Info debug logging all the time.. I just didn't know how to get the logs.. but he did say this procedure {enabled} Verbose logging which apparently represents more data than it was spewing forth before.

In addition CyberMike told me the debug logging could be monitored [realtime] using the AndroidStudio.. which made me think of the ADB - Android Debugging interface.. which I know little about.

ADB provides a shell interface when an Android device is connected to a USB serial port for debugging programs under development.. technically [re-signing] "turned back the clock" on the released version of the APK and made it think it was still under development and {enabled} the verbose debug logging.. which while unexpected.. was 'guessed' at based on looking at software archeology of the period for 'Android - Ice Cream Sandwich' - its a relic from the past - a behavior of programmers from a bygone era.

3/04/2016

Zeo Mobile, finding zemo

A couple of developments, first hosting a dev hangout tomorrow at 4pm to see if anyone else is interested in trying to use the Zeo Mobile headbands in new and different ways. Second CyberMike wrote a Bluetooth parser plugin for Wireshark.. which seems very interesting.


This project looks like its got a lot of history, between its close source, partial open source and APIs for accessing the data. The Protocols "are out there.." I am just not sure if they are hiding in plain site in a text document already.. or need a bit of study.

I have almost talked myself into believing the Raw data is available.. but that hinges on whether the headbands for the bedside unit are the same as the headbands for the mobile units. And I'm not sure how to check that.

--

Had some good back and forth with CyberMike today.. his LUA dissector script for Wireshark is showing real promise at turning the Bluetooth messages into usable data.. that means the protocol behaviors can be studied... which he's already gone a long ways towards that goal.

He also doesn't think the Mobile is anything like the Bedside Headband... well good.. then won't have to go down that path for now.  The test modes are of some interest.. but hasn't seen any evidence of them being used in a long sequence of use.


The last time I looked at LUA was so long ago.. it looks practically brand new. It looks and feels like 'C' code but its not.. but decoding with it might be a good way of prototyping a parser for code on lots of platforms and for lots of apps.

The key thing about all this is I did not know you could use a "scripting" language like LUA to prototype protocol parsers in Wireshark. I thought they always had to be compiled modules.

It turns out all of the default "dissectors" are precompiled, however the plugins directory (there is a "global plugin directory" and a private "user plugin directory") can contain user supplied LUA scripts which are 'C' like and have recursive and object oriented structures. In general a script declares an init function and a callback function which Wireshark can use when it comes across a situation that indicates it should be parsed by this protocol parser.

In this case Bluetooth is being used like a serial port or wireless comm communications device called an RFCOMM channel. The parser is "attached" to this protocol declaration as a subtype which can also be called by "forcing" Decode As.. and selecting the subtype.

The subtype in this case is called "zeo headband protocol"

The protocol from what I can see is not too far removed from ANT+ in that messages and types are declared which determine how sequential packets are processed back into frames to deliver their payload.

Some of it is status, some of it contains sleep records.

From reading the Users Manual in very fine print in the installed App on an Android Phone.. one method of triggering a download of sleep data is to tap the single button on the side of the unit once data collection has ended. This is mainly for the situation where the device looses battery power before the end of a night. The next day the device can be recharged and manually triggered to download the data. Normally it does a complete download of data at the end of a night.

The other is periodically the zeo pod will wake up from a deep sleep to send sleep data, according to the former CEO.. the Mobile model will do this every 5 minutes.

The Press release from one of the Nordic countries indicated the processor in the Zeo Mobile is the EFM32 M3 Cortex 'Gecko' with 128 MB of onboard flash memory, if sleep records take up around 1.5KB that is really a lot of storage space. But some of that space however will be taken up by actual program code.

A few links

Zeo, Inc. is using the EFM32 Gecko MCU in its Zeo® Sleep Manager™ Mobile.
- From a 95mAh rechargeable battery cell a time between headband battery charging of 4 days was achieved by product designers.

Zeo Sleep Manager Mobile uses Bluetooth -- not Bluetooth Low Energy
While the headband looks almost exactly the same, its guts couldn't be more different. Zeo's legacy model had all the processing power in the bedside display, while the new headband has the intelligence onboard. The processor coupled with Bluetooth makes for a more power-intensive device, but Rubin said that it can easily last the night and could hold its charge for at least an entire day and up to three. The device also includes an accelerometer for the first time, which enables it to track the wearer's movement at night and determine sleep position. The accelerometer can also help refine Zeo's algorithm. Since the processing power is local, the headband does not need to transmit continuously anymore -- it sends data to the smartphone every five minutes, Rubin said.
US Patent - Systems and methods for sleep monitoring (Zeo > ResMed 12/2013)
Describes processing of the raw EEG data into sleep states

US Patent - Data-driven sleep coaching system (Zeo > ResMed 12/2013)
Zeo Bedside - Contains the equation for determining the ZQ value from acquired data.

US Patent - Multi-modal sleep system (Zeo > ResMed 12/2013)
Zeo Mobile

A Zeo Developer describing Signal processing - Stephen Fabregas

Developer API's (including Android) and Terms

FCC ID Exhbits for Hardware WH4ZEO101
Zeo Bedside

FCC ID Exhibits for Hardware WH4ZEO301
Zeo Mobile

3/03/2016

Kangaroo PC, Roo the Day with Win10

First time I've ever bought something from the Microsoft Store online. This is a $99 dollar Windows10 "PocketTop".. essentially a headless portable WiFi companion for your Android phone that can double as a NAS for your phone, an Overnight desktop for a hotel or a Media server for the living room. It even has a Finger print reader to secure the data carried around on its built-in storage. USB2 and USB3 ports, HDMI audio and video out, Bluetooth 4.0 - looks to be more fun than a bushel full of Rasberry Pi.. more on that later.