Related
So, when I first started using smartskey.exe, it was located in /My Documents/My Downloads. Everything was working fine, but then I decided to rename My Downloads to just Downloads. This messed with the smartskey entry in the autolaunch thing, so I changed the target of /Windows/StartUp/smartskey.lnk. This stopped the annoying "file not found" errors when soft-resetting the device, but when the device wakes up after around five minutes of non-use, I still get a notification error reading "Could not execute command '/My Documents/My Downloads/smartskey.exe'". I've gone through every file (with Total Commander's find file function) and every registry key (with PHM Registry Editor's search function), but I can't find where there's still a reference to /My Documents/My Downloads/. Any idea where smartskey may have put such a reference and how I can remove it?
that's because it's not in the registry, it's in the notification queue.
You'll have to get a program to scan it and remove the broken references.
rwald said:
So, when I first started using smartskey.exe, it was located in /My Documents/My Downloads. Everything was working fine, but then I decided to rename My Downloads to just Downloads. This messed with the smartskey entry in the autolaunch thing, so I changed the target of /Windows/StartUp/smartskey.lnk. This stopped the annoying "file not found" errors when soft-resetting the device, but when the device wakes up after around five minutes of non-use, I still get a notification error reading "Could not execute command '/My Documents/My Downloads/smartskey.exe'". I've gone through every file (with Total Commander's find file function) and every registry key (with PHM Registry Editor's search function), but I can't find where there's still a reference to /My Documents/My Downloads/. Any idea where smartskey may have put such a reference and how I can remove it?
Click to expand...
Click to collapse
As GldRush98 stated, you'll need to clean up the system-level Notification Queue. I recommend SKTools for the task - it's one of the best utilities for the PPC and well worth the money.
I grabbed a copy of MemMaid, and that solved the problem. Thanks for your help guys!
So people are constantly saying to me, "But Dak! I'm too much of a sodding conformist to have anything resembling a unique personality! All of my ringtones are exactly the same stock drivel that everyone else in my suburbanite wonderland has on their phones! If my phone played random ringtones, as you propose, I wouldn't be able to tell if it was in fact my phone ringing because I don't have a creative bone in my evolutionary throwback of a body!", at which point they usually dissolve into the obscure nothingness of mundania.
But now you don't have to fall victim to this pitiful demise! Naysayers be damned and behold: here is a MortScript to make your phone play ringtones randomly selected from a directory that you specify.
Developed for Hermes/WM5, but it might work for you with little or no modification.
Code:
[U]Version History[/U]
1.0
-Initial Release
1.1
-Fixed path error-checking
-Compacted code a bit
1.2
-More error-checking
-Script automatically reconfigures itself if files in ringtone path have changed
nice job man...
keep it up.. really nice aps.... thanks...
New version (1.2) available; major changes:
1. Much more comprehensive and robust error-checking routines.
2. Automatically detects and reconfigures itself when you add/remove/change files in your ringtone directory.
no *.exe file was attached in zip file to execute oblyvaeonRandomRingtones.mscr . pls advice
no .exe is needed, you need to install mortscript (freeware) in your pda.
not work on o2i?I tried but not work.
Works on the Sprint HTC Touch running WM6. Thank you so much for this. I was looking for something that could do this and so far it appears to work great. Thanks a bunch.
Thank you -- it works great on Kaiser.
While 1-2% CPU usage isn't much, I think it would be better to reduce the run time further -- if only to reduce battery usage. I suppose there's no way to only run a script as part of an incoming call event (like in event-based VBA coding, etc.)?
Also, I seemed unable to change the folder to \Storage Card, until I manually changed it in the ini file. Maybe I was doing something wrong.
Any chance of getting something like this for slider sounds?
mmoroz said:
Thank you -- it works great on Kaiser.
While 1-2% CPU usage isn't much, I think it would be better to reduce the run time further -- if only to reduce battery usage. I suppose there's no way to only run a script as part of an incoming call event (like in event-based VBA coding, etc.)?
Also, I seemed unable to change the folder to \Storage Card, until I manually changed it in the ini file. Maybe I was doing something wrong.
Click to expand...
Click to collapse
The 1-2% spike only occurs every 1 second (maybe not clear in documentation), but you could reduce this further by modifying the delay time to every 5, 10, 30, or any arbitrary number. The line "Sleep(1000)" is the 1000 millisecond delay. MortScript is not quite as advanced as any implemetation of VB script (loop-based or nothing as far as I can tell), heh
As for working from \Storage Card, that's how mine is personally set up and I did it through the default interface (no ini edit), so it does work; must have been an input error.
supa4h said:
Any chance of getting something like this for slider sounds?
Click to expand...
Click to collapse
Not sure what "slider sound" is... ? It's probably possible; if there's a setting in the registry, this script could handle it. Case in point: I'm currently modifying it to work with Text Messaging at the request of a user.
"Technical Details
=================
The method used to detect an incoming call is to check if the phone window is currently active (WndActive). The condition becomes true as soon as an incoming call notification is received, regardless of whether or not you can see the actual keypad. Of course, the condition is also true when you activate the phone to place a call..."
I noticed this does not hold true when using AC's S2U2 slide to answer function. The ringtone will stay the same unless I actually answer the call.
This is great, thank you.
I've been trying to rack my brain and I'm just not able to figure out how to modify this script so that it just changes the ringtone once a day. I can use a scheduling program (CT Scheduler Lite does the trick for me), but I'd like to have a script just like this run once in the early morning, and then be done, so as to save CPU cycles.
My amateur coding level allows me to create a script that renames each file every morning, but that makes it difficult to add in new mp3s.
Any ideas?
This program works perfectly like it should. But now i have a problem when i updated to windows mobile 6.1 it dosent seem to work. Im not sure if its mortscript thats not workin on 6.1 or is it this app. I hope the creator reads this and does a fix for this because its a really good program.
I have a Sprint touch running windows 6.1 and this is working great for me.
Thank!
Scripts is Great
Newbie on this, How do i install the script?
When i try to install it all that happens is that my tytn 2 don`t know how to handle the file..
randomly stops
it works fine, then it randomly quits working, and i have to restart the script again.
any ideas?
yeah, im lost too
I've been looking for a ring tone "randomizer," and this really seems like it's going to work. I need to get it on my phone now.
Little Help anyone ?
LG Voyager VX10000
1st step: I need to find a script program for my phone ?
Installed on my Touch Pro 2, it did not work =(.
Hey guys,
* UPDATE * - I now realize that the first version of this script did not work. Problem should be solved as I've updated it to use VJVolubilis to send the Bluetooth ON command, rather than change the one registry entry.
Click to expand...
Click to collapse
I write this as a newbie who's just written his, well, 2nd MortScript. I was fed up with the very common problem that everyone is experiencing, which is their Bluetooth being randomly shut off on the X1.
What I did to resolve the problem (temporarily, until SE provides a proper fix), is to write this MortScript that will run resident in memory (uses only about 90kb, a non-issue with our massive X1 RAM) and poll the status of Bluetooth every "X" (user-defined) minutes. It will then send a command to VJVolubilis turning BT on. If it's already on still, then nothing happens. Note that when it 'turns on' Bluetooth, it will put it into the normal status of Connectible, but not Discoverable, or any other state for that matter. It should only really be reset to "On (Connectible)" from Off because if you were currently using your BT (for ActiveSync, A2DP) then it should not turn itself off in the first place. I think this was the safest bet since there are MANY 'states' for BT to be in.
You will need a copy of MortScript installed in order for this script to work. You can get MortScript at the following link:
http://sto-helit.de/index.php?module=download&entry=ms_program&action=list
Once you've installed MortScript (or if you already had it installed), simply place the "X1FixBluetoothPower.mscr" file in your \Windows\StartUp folder so it will be run upon every boot up, and stay running.
For people who prefer to look at the script contents, then create their own, below is what's contained within my "X1FixBluetoothPower.mscr" file:
Code:
# Xperia X1 Bluetooth Always ON Script
#
# NOTE that you will NEED a copy of VJVolubilis which is a tiny .exe and can be found here by the great Vijay555:
# http://www.vijay555.com/vj/releases/vjvolubilis/vjvolubilis.cab
#Define the interval (in minutes) that BT State will be checked
#Edit "checkmins" number below:
checkmins = 5
#Begin an endless loop that checks vijay555's app every X mins
While( ProcExists( "device.exe") )
Run("\program files\vijay555\vjvolubilis\vjvolubilis.exe"," -blueon")
Sleep(checkmins*60000)
EndWhile
Note that I use a default time of 5 minutes, however on my own device I actually use 1 minute. I have a hard time believing that this will be any sort of 'performance' limiter when it's run, so every 1-2 mins shouldn't be a problem. If you want to edit the minutes, simply open the .mscr file up in Notepad before you dump it on your device (or alternatively, edit it on your X1 with something like Total Commander).
Anyways, this is one of my first scripts written in MortScript, so I hope you guys enjoy it. If anyone else can suggest any optimizations to my 'code', then by all means, please post in this thread.
Below you should find the attachment to the actual .mscr file. Please leave your feedback as to how well the script works for you.
Thanks guys, trying to give back to this amazing community whenever I can!
Well done. Mortscript is the future!
is it possible to add an entry in your skrip, that a stereoheadset connected in the A2DP mode automaticly?
Download A2DP Toggle: http://www.teksoftco.com/index.php?section=freeware
Install and disable the Today-plugin.
Then add a line to the mortscript:
Code:
Run( "\Program Files\Teksoft\A2DPToggle\a2dp.exe", "-a2dp:on" )
scar45 said:
Hey guys,
I write this as a newbie who's just written his, well, 2nd MortScript. I was fed up with the very common problem that everyone is experiencing, which is their Bluetooth being randomly shut off on the X1.
What I did to resolve the problem (temporarily, until SE provides a proper fix), is to write this MortScript that will run resident in memory (uses only about 90kb, a non-issue with our massive X1 RAM) and poll the status of Bluetooth every "X" (user-defined) minutes. If it discovers that BT is off, it will turn it on. If it's already on, then nothing happens. Note that when it 'turns on' Bluetooth, it will put it into the normal status of Connectible, but not Discoverable, or any other state for that matter. It should only really be reset to "On (Connectible)" from Off because if you were currently using your BT (for ActiveSync, A2DP) then it should not turn itself off in the first place. I think this was the safest bet since there are MANY 'states' for BT to be in.
You will need a copy of MortScript installed in order for this script to work. You can get MortScript at the following link:
http://sto-helit.de/index.php?module=download&entry=ms_program&action=list
Once you've installed MortScript (or if you already had it installed), simply place the "X1FixBluetoothPower.mscr" file in your \Windows\StartUp folder so it will be run upon every boot up, and stay running.
For people who prefer to look at the script contents, then create their own, below is what's contained within my "X1FixBluetoothPower.mscr" file:
Code:
# Xperia X1 Bluetooth Always ON Script
# by George Merlocco of protogenlabs.com
#Define the interval (in minutes) that BT State will be checked
#Edit "checkmins" number below:
checkmins = 5
#Begin an endless loop that queries the BT registry entry every X mins
While( ProcExists( "device.exe") )
#Define variable to check status of Bluetooth via registry
BluetoothStatus = RegRead( "HKLM","System\State\Hardware","Bluetooth" )
#if Bluetooth DWORD = 8, BT is OFF so turn it on (set to 9)
If ( BluetoothStatus = 8 )
RegWriteDWord( "HKLM","System\State\Hardware","Bluetooth", "9" )
EndIf
Sleep(checkmins*60000)
EndWhile
Note that I use a default time of 5 minutes, however on my own device I actually use 1 minute. I have a hard time believing that this will be any sort of 'performance' limiter when it's run, so every 1-2 mins shouldn't be a problem.
Anyways, this is one of my first scripts written in MortScript, so I hope you guys enjoy it. If anyone else can suggest any optimizations to my 'code', then by all means, please post in this thread.
Below you should find the attachment to the actual .mscr file. Please leave your feedback as to how well the script works for you.
Thanks guys, trying to give back to this amazing community whenever I can!
Click to expand...
Click to collapse
Brother, I install the script installed in phone but when phone boot up, the bluetooth is not turn on? Anything I missed out?
Hi,
I notice that you have added another VJVolubilis and X1FixBluetoothFinal-MSCR-v2.zip, do we need to uninstall the MortScript we installed earlier?
Do advise us accordingly, thanks.
chongbh said:
Hi,
I notice that you have added another VJVolubilis and X1FixBluetoothFinal-MSCR-v2.zip, do we need to uninstall the MortScript we installed earlier?
Do advise us accordingly, thanks.
Click to expand...
Click to collapse
yes chongbh, you can remove the other (v1) script completely by simply deleting the file. Next, grab the .cab installer for Vijay's app, install it to the PHONE memory (only like 15kb), and unzip the X1FixBluetoothFinal-MSCR-v2.zip into your \WINDOWS\STARTUP folder. Simple as that.
Further to this, you can customize how frequently you want the script to run which will in turn run VJVolubilis + the argument to turn BT on.
On a side note, I'm not quite sure why the previous script didn't work. I do have a feeling that it's because SE uses a proprietary Bluetooth stack which ignores that change to the single registry entry. I would love to find out how VJVolubilis and Wisbar Advance Desktop trigger Bluetooth states, because they still do work with the X1.
Anyways, this patchwork shouldn't have to last very long (not too bad still as MortScript.exe uses peak 100kb memory while running), and we see an official CAB update from Sony Ericsson addressing the well-known issue. Hope this helps some of you hold over till then!
Guess for some newbie might be in the lost as in what are the proper procedures :
1) Download and install the MortScript.cab into PHONE Memory :
http://sto-helit.de/index.php?module...am&action=list
2) Download and install the Vjvolubilis.cab into PHONE Memory :
http://www.vijay555.com/vj/releases/vjvolubilis/vjvolubilis.cab
3) Download the X1FixBluetoothFinal-MSCR-v2.zip from the 1st post of this thread
4) Unzip the X1FixBluetoothFinal-MSCR-v2.zip into your X1's phone memory location : \WINDOWS\STARTUP folder
5) Reboot your phone and your Bluetooth should stay ON forever
I have tested on my X1 and it works great! Thanks to Scar45 for your effort and guidance.
Hi,
the \Windows\Startup folder mentioned - is that the same as \Windows\Autostart ? Or should I create a \Windows\Startup, because there is no such folder at the moment in my X1...
Thanks for enlighten me on why my X1 keeps shuting off the Bluetooth all the time...
/Stefan
Thanks a lot
I contacted Sony Ericsson because my Bluetooth headset was "detecting" the bluetooth dropped and when I looked on the X1i the Bluetooth was turned off.
They told me to buy another BT headset, nice to see I wasn't crazy
brago said:
Hi,
the \Windows\Startup folder mentioned - is that the same as \Windows\Autostart ? Or should I create a \Windows\Startup, because there is no such folder at the moment in my X1...
Thanks for enlighten me on why my X1 keeps shuting off the Bluetooth all the time...
/Stefan
Click to expand...
Click to collapse
Not a problem Stefan, and yes, you can create the \Windows\StartUp folder if it isn't there already. I would test it by copying ANY shortcut in there and seeing if it runs that program after a soft-reset. If that's all good, put the .mscr script in the \Windows\StartUp folder and you'll be good to go.
lmame said:
Thanks a lot
I contacted Sony Ericsson because my Bluetooth headset was "detecting" the bluetooth dropped and when I looked on the X1i the Bluetooth was turned off.
They told me to buy another BT headset, nice to see I wasn't crazy
Click to expand...
Click to collapse
Apparently they are aware of the issue, but I'm sure that knowledge doesn't trickle down to the Customer Service Reps until a proper fix has been released.
Glad this script fix could help a lot of ppl out...thanks again to Vijay and Mirko for the tools needed!!
Yes definitly those tools sound fun ^_^
Edit:
Btw, I saw something weird.
When the BT is dropping, if I delete my BT headset and do the pairing again (resetting the pairing also headset side), it seems the BT doesn't drop until next soft reset or until next time the headset is shut down.
Is Sony even aware of this issue? I called my local Sony X1 support and they were not aware this was even an issue. I think more people need to complain about randomly dropped bluetooth connections!
Yeah!
Thx a lot - my bluetooth-music-streaming works now!
But is it right - I have to choose every time when I connect to the radio in my car - "use as stereo-headset" in the settings?
GREAT JOB! THANK YOU!!!
A2DP Toggle
Epidemie said:
I have to choose every time when I connect to the radio in my car - "use as stereo-headset" in the settings?
Click to expand...
Click to collapse
See A2DP Toggle in post #4.
You can use it together with Mortscript to create a "connect A2DP now" button, instead of going to the bluetooth settings.
wensing said:
Then add a line to the mortscript:
Code:
Run( "\Program Files\Teksoft\A2DPToggle\a2dp.exe", "-a2dp:on" )
Click to expand...
Click to collapse
Thx 4 your help - one last question, i´m sorry ...:
How can I add a line to mortscript???
help needed ...
Still need help - does no one knows the answer, pls?
Thx,
Epi
this works great. thanks.
Epidemie said:
Still need help - does no one knows the answer, pls?
Thx,
Epi
Click to expand...
Click to collapse
Hey Epi,
Sorry no one got back to you, but it's easy to add a line to the MortScript file. Just open the .mscr file in any text editor (I use the built-in one in Total Commander) and add the line in exactly as wensing has described.
Save the file, do a soft-reset, and you should be good to go!
Epidemie said:
Still need help - does no one knows the answer, pls?
Thx,
Epi
Click to expand...
Click to collapse
The script in post #1 is to restart bluetooth if it is (accidently) stopped.
You can add a line to that script to reconnect "bluetooth stereo".
But then it tries to reconnect each 1 minute.
You can also install A2DPToggle and create a shortcut to the exe:
\Program Files\Teksoft\A2DPToggle\A2DP.exe
Then you can put that program on your today screen easily.
And if you want a nice icon with that shortcut, you can change the shortcut file to:
53#"\Program Files\Teksoft\A2DPToggle\A2DP.exe" "-a2dp:1"?\Program Files\Teksoft\A2DPToggle\settings.exe,-0
I want to keep a diary or journal using my xperia, im realy lazy and would prefer to type everything if posible
i basicaly need to enter date and a block of text, thats it
any ideas or projects anyone knows
errr notes??? word???
think i might endup coading one on my own then
go to microsoft word through microsoft office on your phone. or you could always use "Notes"
Ok, I wrote this, its quick and not pretty, if anyone likes it ill post source code,.
(It's fast and functional)
Make the following directory structure:
\Storage Card\Program Files\Diary
\Storage Card\Program Files\Diary\Days
Extract the exe in to the "Diary" folder
run it form there, I put a shortcut in my start menu too.
If anyone besides me finds they use it i'll build an installer.
http://www.vaines.org/xda/diary.rar
I'll start this thread to share my knowledge aquired after many hours of testing regarding the registry settings of Microsoft Voice Command on Topaz with WM6.5 ROM from HTC although the settings may be applicable to other cooked ROM's and phone models.
First of all, I don't know why but different versions of MSVC are installed with different registry settings so I will only talk of the final result. These characters "" do not need to be completed.
Here comes the tricky part. To make MSVC work you need to alter the following registry settings:
HKLM\Software\OEM\VoiceCommand
Type: String
"Path" = "\Windows\VoiceCmd.exe"
HKCU\ControlPanel\SoundCategories\Ring
Type: Dword
(BE CAREFUL HERE, IF IT'S A STRING, YOU NEED TO FIRST DELETE THE STRING AND CREATE A DWORD WITH THE FOLLOWING VALUES)
"AttenuationCategory" = "2" (it's the setting I'm using)
(This value can be changed. It tells how much the ringtone is reduced for the voice to be heard)
The rest of the values here do not need to be altered.
Next is:
HKCU\ControlPanel\SoundCategories\VoiceCommand1
Type: Dword
(SAME HERE, IF IT'S A STRING, YOU NEED TO FIRST DELETE THE STRING AND CREATE A DWORD WITH THE FOLLOWING VALUES)
"AttenuationCategory" = "5" (it's the setting I'm using)
(This value can be changed. It tells how loud the voice in call announcements can be 1 TO 5 1=low 5=high)
The rest of the values here do not need to be altered.
Make sure that the following location's are set to:
HKCU\ControlPanel\Sounds\RingTone0
Type:String
"Category" = "Ring"
and:
HKCU\ControlPanel\Sounds\TTSAnnounce
Type:String
"Category" = "VoiceCommand1"
Type: String
"Sound" = "\Application Data\Volatile\\TTSCallerID.wav
The rest of the values here do not need to be altered.
Do not forget to set your MSVC to announce incoming calls and to announce notifications using Bluetooth hands free if available.
If you want to assign the long call button from the phone to launch MSVC without a third party software then assign it from the personal folder in settings then edit the following registry key:
HKLM\Software\Microsoft\Shell\Keys\40C6
Type: String
"" = "\windows\voicecmd.exe\" (THE LAST SLASH IS CRITICAL, SO USE IT)
Leave the rest the way they are.
This are the settings for which dll should be used to initiate bluetooth communication: BTAGTEXT.DLL , VCBTHAG.DLL (it's installed by MSVC and this is the one you should use) and OEMAGW.DLL.
You should have something like this:
ex:
HKLM\Software\Microsoft\Bluetooth\AudioGateway
Type: String
"BTAGExtModule" = "\windows\vcbthag.dll"
If you want to use your wired headset to launch your MSVC then you need to long press the hang up button.
This setting were tested on the updated WM6.5 ROM from HTC website with MSVC version 1.6.21040 which works perfectly and 1.6.21725 which also works fine except for bluetooth voice command initialization from hands-free which does not work because I don't know why this version of MSVC closes the communication between phone and hands-free.
And last you should set you phone to not use single volume, if you do, the volume of the voice will be reduced with the ringtone, if you set them separately the voice will be spoken out loud even if you reduce the ringtone volume or system volume.
I hope this helps most of you out there who are desperatly trying to use MSVC and don't know how to set it to work the way it was supposed to.
P.S. For those who are trying to get the WWE eastern european 6.5 ROM (ex. Hungaria, Romania, etc), you can get it from HTC selecting in the country selection Ceska Republic. I don't know why but seems that other countries are not updated in the ROM section.
Hi,
I will add this to the MS Voice configger app i have set up.
Thanks for this!
You're welcome
It was my pleasure, I'm glad that someone will be able to use it and not to go through the same hardship as I did.
Dword v.s. String
HKCU\ControlPanel\Sounds\TTSAnnounce
Type: Dword
"Category" = "VoiceCommand1"
In the HKCU key you mentoned above, My type in the phone showed a string, not Dword. And it seems I can't add new Dword "string" after deleting the string type.
Anything I missed?
Sorry, my mistake, I will edit it, it should be a string there.
Hi guys,
For the longest time after I upgraded my ROM, MSVC has stopped making incoming caller announcements. Everything else works, it just wouldn't make call announcement when a call comes in. Not on speaker, not on BT. I tried everything and it still didn't work.
I came across this thread and I tweaked the registry. As soon as I changed
HKCU\ControlPanel\Sounds\RingTone0\Category from "VoiceCommand1" to "Ring", then incoming call announcement worked for me!!
So i was pretty happy about it, except it only worked for a few days. The last couple days it's stopped working again.
Taking a closer look at the registry I realize what I have is identical to what's posted here, except for -
HKCY/Control Panel/Sounds/TTSAnnounce/Sound
Instead of "\Application data\Volatile\\TTSCallerID.wav" I have "\Internal Storage\Backup and Restore\Application data\Volatile\\TTSCallerID.wav"
I guess it's a case where my ROM moves all volatile files from main memory to internal storage (like a SD card ... I use TouchDiamond1 which uses internal storage instead of SD card).
When I look at that folder, a TTSCallerID.wav file IS indeed generated everytime I make a call to my phone! It is just for whatever reason it fails to play that file!!
Has anybody experienced this? Can anyone help?
Voice Command Problem
Do you use some tweaking programs which could move the temporary folders from the main memory to the storage card or a custom rom which could be tweaked that way? As long as I now, you cannot move the location in which voice command writes his voice file as it is generated within the program.
Strange enough, call announce works after I made the following changes:
HKCU\ControlPanel\Sounds\TTSAnnounce\Category
Change from "VoiceCommand1" to "Ring"
That's different from what's reported on the 1st post, but it seems to work for my phone .... ??!?!
As for moving the volatile folder to internal storage ... it's a feature of my ROM (DiaDuit 1.6.7) ... the ROM automatically does that, even if I put files inside \Application\Volatile\ it moves them to the storage automatically. But everything seems to work fine, including MSVC after I made the above registry tweaks ... so I guess that wasn't the culprit.
Hi,
So I update the config app to version 1.2.
The above mentioned registry fix was already in the config app.
Last post for Topaz test:
http://forum.xda-developers.com/showpost.php?p=5485644&postcount=44
Can someone make a cab of this. thanks
Cab file
shayan.k said:
Can someone make a cab of this. thanks
Click to expand...
Click to collapse
It seems someone already has, check the link above