Category: Hardware

Orange SPV C500 ROM Update – Go get it!

Spotted over at MoDaCo, Orange have released an updated ROM which fixes the GAPI issues on the device and a few other fixes:-

  • Videos can be sent via MMS

  • Flickering issue in games has now been fixed

  • Packet video full screen mode and backlight fix

  • Improved memory management of the camera and video applications

  • Improved browsing/upload speed (changed from GPRS class 8 to class 10)

It’s a 22mb download from Orange’s website

Keep your Smartphone backlight on

If your application involves displaying screen content you probably have come across the issue where the screen backlight turns off after a few seconds of no keypresses. You can override this behaviour in your application using a couple of underdocumented API Power-Management functions. Here is a VB.NET snippet for .NETCF to keep the backlight on:-

Namespace OpenNETCF.WindowsCE.Forms


Public Class Backlight


‘ensure the power requirement is released

Protected Overrides Sub Finalize()


End Sub

‘handle to the power requirement

Private handle As IntPtr


Private Enum PowerState

PwrDeviceUnspecified = -1

‘full on

D0 = 0

‘low power

D1 = 1


D2 = 2


D3 = 3


D4 = 4

PwrDeviceMaximum = 5

End Enum


‘keep the backlight lit

Public Sub Activate()

‘request full power

handle = SetPowerRequirement(“BKL1:”, PowerState.D0, 1, IntPtr.Zero, 0)

End Sub


‘release power requirement

Public Sub Release()

If handle.ToInt32() <> 0 Then

Dim result As Integer

result = ReleasePowerRequirement(handle)

handle = IntPtr.Zero

End If

End Sub

Private Declare Function SetPowerRequirement Lib “coredll.dll” (ByVal pvDevice As String, ByVal DeviceState As PowerState, ByVal DeviceFlags As Integer, ByVal pvSystemState As IntPtr, ByVal StateFlags As Integer) As IntPtr

Private Declare Function ReleasePowerRequirement Lib “coredll.dll” (ByVal handle As IntPtr) As Integer

End Class

End Namespace

Thanks to Paul O’Brien from MoDaCo for inspiring and helping test the code.

Vibration and Pocket PC devices

A number of Pocket PC devices support Vibration as an alert method, most (but not all) are Phone Edition devices. The Vibrate class in the OpenNETCF.Notification library is specific to Smartphone devices only.

However the good news is that the Vibrate functionality is implemented as a notification Led so you can control the vibration using the Led class. One of the peculiarities of the NLed API is that the collection of Leds may contain gaps, for example some devices contain a notification Led at position 0 and a vibration device at position 5. There is no way to programmatically determine the index of the vibration device, you can only determine the overall count of devices. Also the vibration device can only be turned on or off so the Blink setting behaves exactly as On would.

On the HTC Himalaya the vibration device is implemented at index 1 and the following code can be used to turn on and off the vibration:-

OpenNETCF.Notification.Led l = new OpenNETCF.Notification.Led();

//turn on vibration

l.SetLedStatus(1, OpenNETCF.Notification.Led.LedState.On);

//turn off vibration

l.SetLedStatus(1, OpenNETCF.Notification.Led.LedState.Off);