BlinkStick Status 1.0-beta release

I’m very pleased to announce the release of BlinkStick Status application. It’s currently in beta, but already very usable. BlinkStick Status is designed to integrate directly with Microsoft Lync or work in manual mode and provide your availability status in the office so that your colleagues know whether your are busy or available for chat.

You can subscribe/follow this thread for future updates to beta releases.

Features

  • Works with all BlinkStick devices
  • Supports 32/64 bit versions of Windows 7 and Windows 8
  • Supports Lync 2010 & Lync 2013
  • Controls Lync status
  • Fully customizable status notifications
  • Custom notification for Lync IM, call and on call
  • Automatically dismiss Lync IM notification when Lync window is activated
  • Display Lync IM and call notifications only when the computer is locked
  • Global keyboard shortcut (defaults to Crtl+Win+Up) for status popup dialog to change your status instantly
  • Automatic away when computer is locked or user is idle in manual mode

Screenshots

System tray icon:

Status popup dialog accessible via Ctrl+Win+Up at any time:

Settings:

Download

BlinkStick Status 1.0-beta2 release is available for download:

BlinkStick_Status_1.0_beta2.msi

Requires Microsoft .NET 4.5.

Your feedback is very much appreciated!

Changelog

2014-12-23 1.0-beta2

  • Fix crash when multiple threads request pattern animations
  • Fatal crash error logging to file and show error message
  • Fixes to the installer

2014-12-22 1.0-beta1

  • Initial release

Previous versions

BlinkStick_Status_1.0_beta1.msi

Well @arvydas - you just made your blinkstick far more interesting and polished.

So far, the app works great for me this morning, responding perfectly to my Lync client and responding to my call status etc. This is exactly the sort of thing I had hoped it would be able to do!

The only thing that (for me) would make this absolutely killer, is to add blinkstick.com integration, so it can update a remote blinkstick running the web client on a different machine. For my unique use case, it means I could stick it into my Synology NAS in the living room running the web client python script and show my Lync status to family members. However, that is a pretty niche use case, I know!

I haven’t tried it with a pro and a strip of addressable pixels yet, so far I’m just using it with my Ping Pong stick :smile:

I’m really looking forward now to seeing what you do with Outlook, as my number 1 nightmare on a daily basis is missing those darned Calendar Reminders!

Thanks for all your hard work, I’ll let you know if I see any errors!

James.

Ah… just plugged in my Pro with 8 NeoPixels attached and when trying to turn the brightness down a bit I got this:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.InvalidOperationException: This BackgroundWorker states that it doesn’t support cancellation. Modify WorkerSupportsCancellation to state that it does support cancellation.
at System.ComponentModel.BackgroundWorker.CancelAsync()
at BlinkStickStatus.Classes.NotificationManager.StopPattern()
at BlinkStickStatus.Classes.NotificationManager.UpdateNotificationState()
at BlinkStickStatus.Classes.NotificationManager.set_NotificationState(NotificationStateEnum value)
at BlinkStickStatus.MainForm.b__c(Object o, NotificationStateChangedEventArgs ee)
at BlinkStickStatus.Classes.LyncManager.OnNotificationStateChanged(NotificationStateEnum oldState, NotificationStateEnum newState)
at BlinkStickStatus.Classes.LyncManager.Stop()
at BlinkStickStatus.MainForm.Stop()
at BlinkStickStatus.MainForm.buttonBlinkStickSettings_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34014 built by: FX45W81RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

BlinkStickStatus
Assembly Version: 1.0.5469.25429
Win32 Version: 1.0.5469.25429
CodeBase: file:///C:/Program%20Files%20(x86)/BlinkStick%20Status/BlinkStickStatus.exe

System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34239 built by: FX452RTMGDR
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

log4net
Assembly Version: 1.2.13.0
Win32 Version: 1.2.13.0
CodeBase: file:///C:/Program%20Files%20(x86)/BlinkStick%20Status/log4net.DLL

System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34230 built by: FX452RTMGDR
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

Newtonsoft.Json
Assembly Version: 6.0.0.0
Win32 Version: 6.0.6.17820
CodeBase: file:///C:/Program%20Files%20(x86)/BlinkStick%20Status/Newtonsoft.Json.DLL

System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll

System.Runtime.Serialization
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34230 built by: FX452RTMGDR
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll

System.Xml.Linq
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll

System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll

Microsoft.Lync.Model
Assembly Version: 4.0.0.0
Win32 Version: 4.0.7577.5
CodeBase: file:///C:/Program%20Files%20(x86)/BlinkStick%20Status/Microsoft.Lync.Model.DLL

BlinkStickDotNet
Assembly Version: 1.0.3.25429
Win32 Version: 1.0.3.25429
CodeBase: file:///C:/Program%20Files%20(x86)/BlinkStick%20Status/BlinkStickDotNet.DLL

HidSharp
Assembly Version: 1.5.1.0
Win32 Version: 1.5.1.0
CodeBase: file:///C:/Program%20Files%20(x86)/BlinkStick%20Status/HidSharp.DLL

LibUsbDotNet
Assembly Version: 2.2.8.104
Win32 Version: 2.2.8.104
CodeBase: file:///C:/Program%20Files%20(x86)/BlinkStick%20Status/LibUsbDotNet.DLL

Microsoft.Office.Uc
Assembly Version: 4.0.7577.5
Win32 Version: 4.0.7577.5
CodeBase: file:///C:/Program%20Files%20(x86)/BlinkStick%20Status/Microsoft.Office.Uc.DLL

System.Management
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Management/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Management.dll

Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll

CustomMarshalers
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_32/CustomMarshalers/v4.0_4.0.0.0__b03f5f7f11d50a3a/CustomMarshalers.dll

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

I’ve had to do a restore to default settings to wake it back up again and even then it threw a few exceptions. Let me know if you want me to start logging or anything.

James.

@Jay_uk thanks for all your feedback! I’ll add the feature to control remote BlinkStick. It’s actually quite easy as the website already has an API specifically for that.

I have a few questions about that issue:

  • Is it consistently reproducible?
  • Is the error always the same or does it change?
  • How many LEDs do you have connected to your BlinkStick Pro
  • What channel?

Just came up to my mind that logging may be not that useful in this case as it does not log crashes yet. Need to fix this in the next beta release.

Just updated the initial post with beta2 release in case you would like to test it. It should crash more “elegantly” and provide crash details in the log.

Hey @arvydas, I’ve been really busy the past few weeks (as I’m sure everyone has been!) and only just managed to download beta 2. Initial impression is that it’s much more stable than beta1, i can change the brightness now on my single pixel without it crashing.

Just about to test with my pro + 8 pixels… :smile:

James.

Thanks for your feedback! :smiley:

Hi @arvydas, This software looks great and is the reason I decided to go with blinkstick for my Lync LED desk integration project.

I’m waiting on my blinkstick and neopixels to arrive but I had a quick look at the software and it looks really good but was missing a feature I was looking at programming myself (until I saw your software).

I am going to be using a Teensy to emulate a HID keyboard so that when I hit a big button on my desk it will send through a “Windows + F4” which is the toggle Mute shortcut in Lync.

So the feature I am looking for is on the “Status Colours” tab to also have a pattern for when I am on a call but ON and OFF of mute. Like a “live” light they have in radio stations.

This stop the frustrating times where you talk for a few moments and you then hear a colleague say “Er… I think you might be on mute …”

If the code is is open source I’m sure I could fork and push the feature but if you want to keep it closed then adding in the feature would be greatly appreciated.

Great work on all of this and kind regards,

Andrew

This feature would kill it for me! I’m now using my blinkstick for notifications of incoming calls and IM’s rather than my status, which its perfect for.

The option to display when I’m muted and when not, would be amazing!

James.

@andrew_savill This seems like a great idea! I’ll open source the BlinkStick Status application on Github. Will let you know when it’s available.

I love this utility, and I have my BlinkStick Strip hanging above my cube and blinking proudly when I don’t want people bothering me. Unfortunately the utility seems to be having problems lately. As the day goes on, it stops updating the strip with the proper color, so I have to exit Blinkstick Status and restart it. Is anyone else having this issue? I’m using it in conjunction with Lync 2013

@rogerharkavy, could you please enable logging in Advanced -> Logging -> Full and leave it running. When problem occurs, could you please click the link Open Log Folder in the same settings window and send me the log file to info at blinkstick dot com.

Okay, I will let you know.

@arvy: It sounds like the problem I have. As I said Blinkstick stops working during the day. As far as I know Strip and Square are basicly the same.

@p0ke: Roger reported that restarting the status application seems to resolve the problem. I thought that you have to unplug BlinkStick and plug it back in?

You are right, sorry

Played around with BlinkStick Status. I’m only using the “Automatic away” function. After a while the light color receives no update like roger said (it stays “green” (available) but i´ve been away from the pc for several minutes). BlinkStatus seems to “hang” then, I can get the TNA menu but cannot control it and it persists on the screen. It seems you retry the getfeature “endless”?!?
Restarting BlinkStick Status solves the problem.
I sometimes have problems with setfeature in my NotifierLight, too. Could it be the hidsharp library we are using?

My OS here is Win8.1

BlinkStickStatus.log.zip (4.0 KB)

Hi, Arvyd. Had it happen today. Booted machine, logged in to Outlook and Lync, started doing some work. Blinkstick Strip is green. Got an IM from a colleague, BlinkStick Strip turns flashing red. IM conversation turns into a Lync call. At the end, the IM/call window is closed, but BlinkStick Strip stays flashing red. I exited the utility and zipped up the log for you.

Also, using Windows 7 with all the latest patches, Lync is 2013 (1.5.0.4701.1000) MSO (1.5.0.4727) 32-bit.

Hope this helps!

BlinkStickStatus.zip (3.1 KB)

Hey Arvy,

it seems there is a GDI object leak in your tool. GDI objects will be created with any status change and it looks like you never dispose them. If somebody use this tool intensively it will reach the windows limit for GDI objects.
Could be a problem with the status color in your TNA icon.
You have to approve it, you know I´m only amateur :slight_smile:

Arvyd, I just wanted to let you know that the problem occurs on a machine with a fresh install of everything including Windows 7 and Office 2013. Strangely, BlinkStick is no longer writing content to the logs, they’re all empty files, so I have nothing to share with you.