Updated on 07/03/14
Just sharing. Better ideas, suggestions, recommendations... are more than welcome.
Since upgrading (clean installation) to Windows 8.x 64-bit I got the famous black screen with cursor issue (at boot time) before the login screen (PC restart or Power Off/On required). This wasn’t really a surprise given the age of my Sony Vaio and its ATI Mobility Radeon x2300(1) not supported by AMD under 8.x (latest available drivers are for Vista/7).
CONDITIONS TO REPRODUCE THE ISSUE
Fast Startup must be turned On (if option is Off there’s no issue - a possible workaround) and make a PC Shutdown (PC restart or resuming from Sleep/Hibernation causes no problem).
I believe I followed every advice found here and there and tested a number of drivers (even modded ones) with no success.
WORKAROUND - At your own risk…
This is really a non-elegant one but it has proven to work in my case. It consists of running a task at boot time that restarts the graphic adapter:
1 – Download the Microsoft DevCon utility
If you don’t have it already
download DevCon (no more available as a separate utility).
A PowerShell script is probably an option as well but requires a bit of development while DevCon does the job in a single line.
2 – Identify the Graphic adapter ID
- Go to the Device Manager > Expand the Display adapters section > Double-click on the adapter > Go to the Details tab
- Choose Hardware Ids in the Property drop-down list
- Right-click on the 1st line of the Value list > Copy
3 – Test the Graphic adapter restart (optional but recommended)
- Open a Command Prompt as Admin > Navigate to the folder where DevCon is stored (pay attention to 32-bit vs. 64-bit)
- Type DevCon Restart “ > Paste the content of the clipboard > add an extra “ (quote)
Example.: DevCon Restart “PCI\VEN_1002&DEV_718A&SUBSYS_9015104D&REV_00”
- [Enter] and cross fingers…
4 – Create the Scheduled Task
- Open the Task Scheduler > Create a new task > Give it a name and description
- Preferably use the local Administrator account, at least an account with Admin privileges
- Run whether the user is logged on or not: Checked
- Run with highest privileges: Checked
- Begin the task: On an event(2)
- Select Custom
- Click Edit Event Filter…
- Switch to the XML tab
- Check Edit query manually + YES to “If you choose…”
- Paste the following query(3):
<Query Id="0" Path="System">
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Boot'] and (Level=4 or Level=0) and (EventID=27)]] and *[EventData[Data[@Name='BootType'] and (Data='1')]]</Select>
- Click OK
- Enabled: Checked
- Action: Start a program
- Program/script: [Path to DevCon]\DevCon.exe
- Add arguments (optional): Restart “[GraphicAdapterHardwareId]” (as in #3 above)
- Start the task only if the computer is on AC power: Unchecked
- Stop if the computer switches to battery power: Unchecked
- Stop the task if it runs longer than: 1 minute
- If the running task does not end when requested, force it to stop: Checked
EVENT LOG vs. TASK SCHEDULER
The picture below shows that the task was executed (and succeeded: 0x0) when the Kernel-Boot Event ID 32 was fired (it sometimes takes a few more seconds):
(1) Current installed driver: v8.561.0.0 from the Microsoft Update Catalog
(2) Why not At startup? Tests have proven this doesn’t work. I suspect the hybrid shutdown to be the root cause – not sure though.
(3) Why a specific query? To ensure the scheduled task only run at boot time after a complete shutdown (and not on resuming from hibernation) two things must be considered: 1) The boot; 2) The type of boot (see More Information below). Unfortunately the Task Scheduler doesn't allow setting the 2 conditions through the UI. Setting the 1st condition is no problem but the 2nd ( and *[EventData[Data[@Name='BootType'] and (Data='1')]) must be added manually in the XML tab.
With fast startup (Control Panel > Hardware and Sound > Power Options > Choose what closing the lid does) option checked Windows generates the following System/Kernel-Boot Event ID 27:
- Boot type 0x1: after a complete shutdown
- Boot type 0x2: when resuming from hibernation
Hope this helps