These tips are for - and tested in - MGSE, the default Linux Mint 12 login session, the one that looks like this. Use them in other distros, other desktop environments and other login sessions at your own risk. I don't think many of of these are of much use to MATE or Gnome Classic users. Unless otherwise noted all tips have been tested on my machine but I cannot guarantee that they work for you as well as they did for me. If you're not comfortable running terminal commands, ask in the thread if there is another way of applying the fix.
1. System
a. Get all programs and services back in Startup Applications
b. Create desktop launchers
c. Get the screensaver back
d. Configure window buttons
e. Disable Guest session login screen option
f. Login automatically to your session
g. Advanced power settings
h. Icons duplicated?
i. Remove MATE icons from Gnome Shell menus
j. Remove MATE altogether
k. Disable bluetooth on startup
l. Configure auto-mounting of drives
m. Reduce laptop screen brightness persistently
...
z. Don't like Mint 12?
2. Gnome Shell
a. Browse official Gnome extensions
b. Recommended extensions
c. Disable the bottom panel
d. Get Mint logo corner ripple
e. Change the default theme overview button image
f. Disable the Native Window Placement extension
g. Less spacing between notification area icons
h. Deactivate top left hot corner
i. Change size of overview grid icons
j. Get full(er) Icon captions (application names) in the overview grid
k. Activities button behaviour in single panel shell setup with Mint menu
l. Change Mint Menu font size
m. Permanently hide bottom notification bar
n. Disable window edge tiling ("Aero snap")
o. Disable the Show Desktop panel icon
p. Clock in the middle of panel
q. MGSE with MATE bottom panel
- NB: as the Mint themes and extensions are in the Mint PPA, they will be updated occasionally and whatever changes you make to the theme/extension system files will be overwritten each time. A way around this is to copy the theme/extension folders and use the copies for your fixes. That way you won't get updates for themes and extensions, but you won't lose your tweaks either. You can also just apply your tweaks after each update, doesn't take too long once you get the hang of it.
3. Applications
a. Install Ubuntu One
b. Install USC (Ubuntu Software Center)
c. Manage grub settings with Grub Customizer
d. Lose excess weight with bleachbit
e. Install Google Chrome
f. Jupiter for burning laptops
g. Tweak Gnome 3 with Ubuntu Tweak
4. Themes and appearance
a. How to install window themes
b. How to install icon themes
c. How to install Gnome Shell themes
d. Change login screen background
e. Updated version of Mint's icon theme
All of this can be found here. Thank you, "bimsebasse"!
Saturday, 24 March 2012
Monday, 27 February 2012
Set up a LAMP Server on Linux Mint / Ubuntu
Install and Configure the Apache Web Server
The Apache Web Server is a very popular choice for serving web pages. While many alternatives have appeared in the last few years, Apache remains a powerful option that is recommended for most uses. Issue the following command to install Apache:
apt-get install apache2
Now we'll configure virtual hosting so that we can host multiple domains (or subdomains) with the server. These websites can be controlled by different users, or by a single user, as you prefer.
Configure Virtual Hosting
There are different ways to set up virtual hosts, however we recommend the method below. By default, Apache listens on all IP addresses available to it. We must configure it to listen only on addresses we specify. Even if you only have one IP, it is still a good idea to tell Apache what IP address to listen on in case you decide to add more.
Begin by modifying the NameVirtualHost entry in /etc/apache2/ports.conf as follows:
File excerpt:/etc/apache2/ports.conf
NameVirtualHost 12.34.56.78:80
Be sure to replace "12.34.56.78" with your IP address. Now, modify the default site's virtual hosting in the file /etc/apache2/sites-available/default so that the entry reads:
File excerpt:/etc/apache2/sites-available/default
<VirtualHost 12.34.56.78:80>
Configure Name-based Virtual Hosts First, create a file in the /etc/apache2/sites-available/ directory for each virtual host that you want to set up. Name each file with the domain for which you want to provide virtual hosting. See the following example configurations for the hypothetical "example.com" and "example.org" domains. Substitute your own domain names for those shown below. File:/etc/apache2/sites-available/example.com
<VirtualHost 12.34.56.78:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /srv/www/example.com/public_html/
ErrorLog /srv/www/example.com/logs/error.log
CustomLog /srv/www/example.com/logs/access.log combined
</VirtualHost>
File:/etc/apache2/sites-available/example.org
<VirtualHost 12.34.56.78:80>
ServerAdmin webmaster@example.org
ServerName example.org
ServerAlias www.example.org
DocumentRoot /srv/www/example.org/public_html/
ErrorLog /srv/www/example.org/logs/error.log
CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>
Notes regarding this example configuration:
All of the files for the sites that you host will be located in directories that exist underneath /srv/www. You can symbolically link these directories into other locations if you need them to exist in other places.
ErrorLog and CustomLog entries are suggested for more fine-grained logging, but are not required. If they are defined (as shown above), the logs directories must be created before you restart Apache.
Before you can use the above configuration, you'll need to create the specified directories. For the above configuration, you can do this with the following commands. Substitute your own domain names for those shown below.
mkdir -p /srv/www/example.com/public_html
mkdir /srv/www/example.com/logs
mkdir -p /srv/www/example.org/public_html
mkdir /srv/www/example.org/logs
After you've set up your virtual hosts, issue the following commands:
a2ensite example.com
a2ensite example.org
This command symbolically links your virtual host file from sites-available to the sites-enabled directory. Finally, before you can access your sites you must reload Apache with the following command:
/etc/init.d/apache2 reload
Assuming that you have configured the DNS for your domain to point to your IP address, Virtual hosting for your domain should now work.
The a2dissite command is the inverse of a2ensite. For example, if you wanted to disable the example.com site, you would issue the following command:
a2dissite example.com
After enabling, disabling, or modifying any part of your Apache configuration, you will need to reload the Apache configuration again with the "/etc/init.d/apache2 reload" command. You can create as many virtual hosting files as you need to support the domains that you want to host.
Install and Configure the MySQL Database Server
MySQL is a relational database management system (RDBMS) and is a popular component of web development tool-chains. It is used to store data for many popular applications, including Wordpress and Drupal.
Install MySQL
The first step is to install the mysql-server package, which is accomplished by the following command:
apt-get install mysql-server
During the installation you will be prompted for a password. Choose something secure (use letters, numbers, and non-alphanumeric characters) and record it for future reference.
At this point MySQL should be ready to configure and run. While you shouldn't need to change the configuration file, note that it is located at /etc/mysql/my.cnf for future reference.
Configure MySQL and Set Up Databases
After installing MySQL, it's recommended that you run mysql_secure_installation, a program that helps secure MySQL. While running mysql_secure_installation, you will be presented with the opportunity to change the MySQL root password, remove anonymous user accounts, disable root logins outside of localhost, and remove test databases. It is recommended that you answer yes to these options. If you are prompted to reload the privilege tables, select yes. Run the following command to execute the program:
mysql_secure_installation
Next, you may create a database and grant your users permissions to use databases. First, log in to MySQL:
mysql -u root -p
Enter MySQL's root password, and you'll be presented with a MySQL prompt where you can issue SQL statements to interact with the database. To create a database and grant your users permissions on it, issue the following command. Note, the semi-colons (;) at the end of the lines are crucial for ending the commands. Your command should look like this:
create database ex_db;
grant all on ex_db.* to 'ex_db_admin' identified by 'ex_db_admin_password';
flush privileges;
In the example above, "lollipop" is the name of the database, "foreman" is the username, and "5t1ck" is the password (without the quotes). Note that database user names and passwords are only used by scripts connecting to the database, and that database user account names need not (and perhaps should not) represent actual user accounts on the system. With that completed, you've successfully configured MySQL and you may now pass these database credentials on to your users. To exit the MySQL database administration utility issue the following command:
quit
With Apache and MySQL installed you are now ready to move on to installing PHP to provide scripting support for your web pages.
Install and Configure PHP
PHP makes it possible to produce dynamic and interactive pages using your own scripts and popular web development frameworks. Furthermore, many popular web applications like WordPress are written in PHP. If you want to be able to develop your websites using PHP, you must first install it.
Ubuntu includes packages for installing PHP from the terminal. Issue the following command:
apt-get install php5 php-pear
Once PHP5 is installed, you'll need to tune the configuration file located in /etc/php5/apache2/php.ini to enable more descriptive errors, logging, and better performance. These modifications provide a good starting point if you're unfamiliar with PHP configuration. Make sure that the following values are set, and relevant lines are uncommented (comments are lines beginning with a semi-colon (;)):
File excerpt:/etc/php5/apache2/php.ini
max_execution_time = 30
memory_limit = 64M
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
display_errors = Off
log_errors = On
error_log = /var/log/php.log
register_globals = Off
After making changes to the PHP configuration file, restart Apache by issuing the following command:
/etc/init.d/apache2 restart
If you need support for MySQL in PHP, then you must install the php5-mysql package with the following command:
apt-get install php5-mysql
To install the php5-suhosin package, which provides additional security for PHP 5 applications (recommended), issue the following command:
apt-get install php5-suhosin
Restart Apache to make sure everything is loaded correctly:
/etc/init.d/apache2 restart
Congratulations! That's it!
The Apache Web Server is a very popular choice for serving web pages. While many alternatives have appeared in the last few years, Apache remains a powerful option that is recommended for most uses. Issue the following command to install Apache:
apt-get install apache2
Now we'll configure virtual hosting so that we can host multiple domains (or subdomains) with the server. These websites can be controlled by different users, or by a single user, as you prefer.
Configure Virtual Hosting
There are different ways to set up virtual hosts, however we recommend the method below. By default, Apache listens on all IP addresses available to it. We must configure it to listen only on addresses we specify. Even if you only have one IP, it is still a good idea to tell Apache what IP address to listen on in case you decide to add more.
Begin by modifying the NameVirtualHost entry in /etc/apache2/ports.conf as follows:
File excerpt:/etc/apache2/ports.conf
NameVirtualHost 12.34.56.78:80
Be sure to replace "12.34.56.78" with your IP address. Now, modify the default site's virtual hosting in the file /etc/apache2/sites-available/default so that the
File excerpt:/etc/apache2/sites-available/default
<VirtualHost 12.34.56.78:80>
Configure Name-based Virtual Hosts First, create a file in the /etc/apache2/sites-available/ directory for each virtual host that you want to set up. Name each file with the domain for which you want to provide virtual hosting. See the following example configurations for the hypothetical "example.com" and "example.org" domains. Substitute your own domain names for those shown below. File:/etc/apache2/sites-available/example.com
<VirtualHost 12.34.56.78:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /srv/www/example.com/public_html/
ErrorLog /srv/www/example.com/logs/error.log
CustomLog /srv/www/example.com/logs/access.log combined
</VirtualHost>
File:/etc/apache2/sites-available/example.org
<VirtualHost 12.34.56.78:80>
ServerAdmin webmaster@example.org
ServerName example.org
ServerAlias www.example.org
DocumentRoot /srv/www/example.org/public_html/
ErrorLog /srv/www/example.org/logs/error.log
CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>
Notes regarding this example configuration:
All of the files for the sites that you host will be located in directories that exist underneath /srv/www. You can symbolically link these directories into other locations if you need them to exist in other places.
ErrorLog and CustomLog entries are suggested for more fine-grained logging, but are not required. If they are defined (as shown above), the logs directories must be created before you restart Apache.
Before you can use the above configuration, you'll need to create the specified directories. For the above configuration, you can do this with the following commands. Substitute your own domain names for those shown below.
mkdir -p /srv/www/example.com/public_html
mkdir /srv/www/example.com/logs
mkdir -p /srv/www/example.org/public_html
mkdir /srv/www/example.org/logs
After you've set up your virtual hosts, issue the following commands:
a2ensite example.com
a2ensite example.org
This command symbolically links your virtual host file from sites-available to the sites-enabled directory. Finally, before you can access your sites you must reload Apache with the following command:
/etc/init.d/apache2 reload
Assuming that you have configured the DNS for your domain to point to your IP address, Virtual hosting for your domain should now work.
The a2dissite command is the inverse of a2ensite. For example, if you wanted to disable the example.com site, you would issue the following command:
a2dissite example.com
After enabling, disabling, or modifying any part of your Apache configuration, you will need to reload the Apache configuration again with the "/etc/init.d/apache2 reload" command. You can create as many virtual hosting files as you need to support the domains that you want to host.
Install and Configure the MySQL Database Server
MySQL is a relational database management system (RDBMS) and is a popular component of web development tool-chains. It is used to store data for many popular applications, including Wordpress and Drupal.
Install MySQL
The first step is to install the mysql-server package, which is accomplished by the following command:
apt-get install mysql-server
During the installation you will be prompted for a password. Choose something secure (use letters, numbers, and non-alphanumeric characters) and record it for future reference.
At this point MySQL should be ready to configure and run. While you shouldn't need to change the configuration file, note that it is located at /etc/mysql/my.cnf for future reference.
Configure MySQL and Set Up Databases
After installing MySQL, it's recommended that you run mysql_secure_installation, a program that helps secure MySQL. While running mysql_secure_installation, you will be presented with the opportunity to change the MySQL root password, remove anonymous user accounts, disable root logins outside of localhost, and remove test databases. It is recommended that you answer yes to these options. If you are prompted to reload the privilege tables, select yes. Run the following command to execute the program:
mysql_secure_installation
Next, you may create a database and grant your users permissions to use databases. First, log in to MySQL:
mysql -u root -p
Enter MySQL's root password, and you'll be presented with a MySQL prompt where you can issue SQL statements to interact with the database. To create a database and grant your users permissions on it, issue the following command. Note, the semi-colons (;) at the end of the lines are crucial for ending the commands. Your command should look like this:
create database ex_db;
grant all on ex_db.* to 'ex_db_admin' identified by 'ex_db_admin_password';
flush privileges;
In the example above, "lollipop" is the name of the database, "foreman" is the username, and "5t1ck" is the password (without the quotes). Note that database user names and passwords are only used by scripts connecting to the database, and that database user account names need not (and perhaps should not) represent actual user accounts on the system. With that completed, you've successfully configured MySQL and you may now pass these database credentials on to your users. To exit the MySQL database administration utility issue the following command:
quit
With Apache and MySQL installed you are now ready to move on to installing PHP to provide scripting support for your web pages.
Install and Configure PHP
PHP makes it possible to produce dynamic and interactive pages using your own scripts and popular web development frameworks. Furthermore, many popular web applications like WordPress are written in PHP. If you want to be able to develop your websites using PHP, you must first install it.
Ubuntu includes packages for installing PHP from the terminal. Issue the following command:
apt-get install php5 php-pear
Once PHP5 is installed, you'll need to tune the configuration file located in /etc/php5/apache2/php.ini to enable more descriptive errors, logging, and better performance. These modifications provide a good starting point if you're unfamiliar with PHP configuration. Make sure that the following values are set, and relevant lines are uncommented (comments are lines beginning with a semi-colon (;)):
File excerpt:/etc/php5/apache2/php.ini
max_execution_time = 30
memory_limit = 64M
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
display_errors = Off
log_errors = On
error_log = /var/log/php.log
register_globals = Off
After making changes to the PHP configuration file, restart Apache by issuing the following command:
/etc/init.d/apache2 restart
If you need support for MySQL in PHP, then you must install the php5-mysql package with the following command:
apt-get install php5-mysql
To install the php5-suhosin package, which provides additional security for PHP 5 applications (recommended), issue the following command:
apt-get install php5-suhosin
Restart Apache to make sure everything is loaded correctly:
/etc/init.d/apache2 restart
Congratulations! That's it!
Tuesday, 21 February 2012
Linux Mint hidden Startup Applications
If you have been using Linux Mint for a while you might notice that
the Startup Applications Preferences has far fewer entries than before.
This is because most of them are hidden by default, to get them back
launch Terminal and run the following command:
sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop
Now you will be able to see all the applications and services that are set to automatically start
Monday, 20 February 2012
TV Maxe
TV Maxe is a SopCast GUI that also supports mms, rmtp and http streams. By default, it comes with a Romanian channel list but more lists (International, UK, France, Danmark, Hungary, Spain, etc.) are available on its wiki page.
TV Maxe comes with a PPA for Lucid, Maverick Natty and Oneiric - add it and install TV Maxe using the commands below:
For other Linux distributions, see the TV Maxe download page (but please note that you'll need to manually install the sp-auth package).
TV Maxe comes with a PPA for Lucid, Maverick Natty and Oneiric - add it and install TV Maxe using the commands below:
sudo apt-add-repository ppa:venerix/blug
sudo apt-get update
sudo apt-get install tv-maxe
For other Linux distributions, see the TV Maxe download page (but please note that you'll need to manually install the sp-auth package).
SopCast Player "segfault" Ubuntu x64
So, "sopcast-player" does not start, and you do:
strace sopcast-player
callbackmethod= ctypes. CFUNCTYPE( None, Event, ctypes.c_void_p)
by,
callbackmethod= ctypes. CFUNCTYPE( None, ctypes. POINTER( Event), ctypes.c_void_p)
strace sopcast-player
in terminal, and you get:
execve( "/usr/bin/ sopcast- player" , ["sopcast-player"], [/* 42 vars */]) = 0
brk(0) = 0x74f000
access( "/etc/ld. so.nohwcap" , F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ| PROT_WRITE, MAP_PRIVATE| MAP_ANONYMOUS, -1, 0) = 0x7f7377495000
access( "/etc/ld. so.preload" , R_OK) = -1 ENOENT (No such file or directory)
open("/ etc/ld. so.cache" , O_RDONLY) = 3
fstat(3, {st_mode= S_IFREG| 0644, st_size=126050, ...}) = 0
mmap(NULL, 126050, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7377476000
close(3) = 0
access( "/etc/ld. so.nohwcap" , F_OK) = -1 ENOENT (No such file or directory)
open("/ lib/x86_ 64-linux- gnu/libc. so.6", O_RDONLY) = 3
read(3, "\177ELF\ 2\1\1\0\ 0\0\0\0\ 0\0\0\0\ 3\0>\0\ 1\0\0\0 \24\2\0\ 0\0\0\0" ..., 832) = 832
fstat(3, {st_mode= S_IFREG| 0755, st_size=1677624, ...}) = 0
mmap(NULL, 3793768, PROT_READ| PROT_EXEC, MAP_PRIVATE| MAP_DENYWRITE, 3, 0) = 0x7f7376ed8000
mprotect( 0x7f737706d000, 2093056, PROT_NONE) = 0
mmap(0x7f737726 c000, 20480, PROT_READ| PROT_WRITE, MAP_PRIVATE| MAP_FIXED| MAP_DENYWRITE, 3, 0x194000) = 0x7f737726c000
mmap(0x7f737727 1000, 21352, PROT_READ| PROT_WRITE, MAP_PRIVATE| MAP_FIXED| MAP_ANONYMOUS, -1, 0) = 0x7f7377271000
close(3) = 0
mmap(NULL, 4096, PROT_READ| PROT_WRITE, MAP_PRIVATE| MAP_ANONYMOUS, -1, 0) = 0x7f7377475000
mmap(NULL, 8192, PROT_READ| PROT_WRITE, MAP_PRIVATE| MAP_ANONYMOUS, -1, 0) = 0x7f7377473000
arch_prctl( ARCH_SET_ FS, 0x7f7377473720) = 0
mprotect( 0x7f737726c000, 16384, PROT_READ) = 0
mprotect(0x619000, 4096, PROT_READ) = 0
mprotect( 0x7f7377497000, 4096, PROT_READ) = 0
munmap( 0x7f7377476000, 126050) = 0
getpid() = 8514
rt_sigaction( SIGCHLD, {SIG_DFL, [CHLD], SA_RESTORER| SA_RESTART, 0x7f7376f0e420}, {SIG_DFL, [], 0}, 8) = 0
geteuid() = 1000
brk(0) = 0x74f000
brk(0x770000) = 0x770000
getppid() = 8513
stat("/home/paul", {st_mode= S_IFDIR| 0755, st_size=4096, ...}) = 0
stat(".", {st_mode= S_IFDIR| 0755, st_size=4096, ...}) = 0
open("/ usr/bin/ sopcast- player" , O_RDONLY) = 3
fcntl(3, F_DUPFD, 10) = 10
close(3) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
rt_sigaction( SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction( SIGINT, {0x40f050, ~[RTMIN RT_1], SA_RESTORER, 0x7f7376f0e420}, NULL, 8) = 0
rt_sigaction( SIGQUIT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction( SIGQUIT, {SIG_DFL, ~[RTMIN RT_1], SA_RESTORER, 0x7f7376f0e420}, NULL, 8) = 0
rt_sigaction( SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction( SIGTERM, {SIG_DFL, ~[RTMIN RT_1], SA_RESTORER, 0x7f7376f0e420}, NULL, 8) = 0
read(10, "#!/bin/ sh\n/usr/ bin/python /usr/s"..., 8192) = 77
clone(child_ stack=0, flags=CLONE_ CHILD_CLEARTID| CLONE_CHILD_ SETTID| SIGCHLD, child_tidptr= 0x7f73774739f0) = 8515
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV}], 0, NULL) = 8515
--- SIGCHLD (Child exited) @ 0 (0) ---
write(2, "Segmentation fault\n", 19Segmentation fault
) = 19
read(10, "", 8192) = 0
exit_group(139)
brk(0) = 0x74f000
access(
mmap(NULL, 8192, PROT_READ|
access(
open("/
fstat(3, {st_mode=
mmap(NULL, 126050, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7377476000
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 3793768, PROT_READ|
mprotect(
mmap(0x7f737726
mmap(0x7f737727
close(3) = 0
mmap(NULL, 4096, PROT_READ|
mmap(NULL, 8192, PROT_READ|
arch_prctl(
mprotect(
mprotect(0x619000, 4096, PROT_READ) = 0
mprotect(
munmap(
getpid() = 8514
rt_sigaction(
geteuid() = 1000
brk(0) = 0x74f000
brk(0x770000) = 0x770000
getppid() = 8513
stat("/home/paul", {st_mode=
stat(".", {st_mode=
open("/
fcntl(3, F_DUPFD, 10) = 10
close(3) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
rt_sigaction(
rt_sigaction(
rt_sigaction(
rt_sigaction(
rt_sigaction(
rt_sigaction(
read(10, "#!/bin/
clone(child_
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV}], 0, NULL) = 8515
--- SIGCHLD (Child exited) @ 0 (0) ---
write(2, "Segmentation fault\n", 19Segmentation fault
) = 19
read(10, "", 8192) = 0
exit_group(139)
There is a workaround for it. Edit /usr/share/ sopcast- player/ lib/vlc_ 1_0_x.py with root privileges.
At line 5453:
replace,
replace,
callbackmethod=
by,
callbackmethod=
Saturday, 4 February 2012
Install Sopcast in Ubuntu / Linux Mint etc.
Open up a terminal and paste the following:
sudo apt-add-repository ppa:jason-scheunemann/ppa
sudo apt-get update
sudo apt-get install sopcast-player
sudo apt-add-repository ppa:jason-scheunemann/ppa
sudo apt-get update
sudo apt-get install sopcast-player
Friday, 15 April 2011
Software-based Input Panel Registry Settings
Input Method Registry Values
Technically, any COM component that implements IInputMethod can be selected into the software-based input panel. The IsSIPInputMethod subkey is a shortcut that presents a list of IMs to the user without loading and querying each object for IInputMethod.IMs are installed in the system as in-process COM servers by using standard COM registry keys. The HKEY_CLASSES_ROOT\CLSID key contains subkeys that represent COM components. The subkeys are textual representations of class identifiers (CLSID). The CLSID subkeys contain an InprocServer32 subkey with a default value. This value specifies the DLL path that implements the component. The CLSID subkeys also contain an IsSIPInputMethod subkey that has a default value that is equal to the 1 string. The following table shows examples of IM registry values.
Monday, 4 April 2011
Windows Embedded CE 6.0 Debugging/Profiling
Objectives
After completing this lab, you will be better able to:
- Create a Platform Image
- Customize and build the OS Design
- Download the OS Design
- Use Remote Tools & Memory Leaks
- Use Windows CE Remote Tools
Estimated time to complete: 60 min
Computers used in this Lab: WindowsCE6
Reference: Microsoft VirtualLabs
After completing this lab, you will be better able to:
- Create a Platform Image
- Customize and build the OS Design
- Download the OS Design
- Use Remote Tools & Memory Leaks
- Use Windows CE Remote Tools
Estimated time to complete: 60 min
Computers used in this Lab: WindowsCE6
Reference: Microsoft VirtualLabs
Windows CE 6.0 - Platform Builder Installation
Visit Windows Embedded CE Developer Center before you get started with Windows Embedded CE 6.0. The following section provides a brief summary of the Platform Builder plugin for Visual Studio 2005 installation process:
Note: Installation must be done in the specified order!
Note: Installation must be done in the specified order!
eVC++ code to read GPS location
The following is code for a simple eVC++ application that reads your location from your GPS device and writes it to file on your WinCE device. It accompanies the following post for Simple GPS helper App...
http://forums.devbuzz.com/tm.asp?m=37186&p=1&tmode=1
http://forums.devbuzz.com/tm.asp?m=37186&p=1&tmode=1
Wednesday, 9 March 2011
iGO SpeedCam MPH/KPH fix
The fix for the problem of SpeedCam Speed Limit always showing in KPH regardless of whether Regional Setting are set to show KPH or MPH. It is a modification to the 480x272 Data.Zip, though with a slight alteration to the code in Part 2, should work for other resolutions.
It is in two stages:
1. In "element_def_480_272.ui" define a new Category SPEEDTXT. It is similar to SPEEDTEXT but with one line removed and a font adjustment as follows:
2. Now Edit "speedcam_480_272.ui". The line:
Needs to be edited to:
It is in two stages:
1. In "element_def_480_272.ui" define a new Category SPEEDTXT. It is similar to SPEEDTEXT but with one line removed and a font adjustment as follows:
2. Now Edit "speedcam_480_272.ui". The line:
Needs to be edited to:
Saturday, 18 December 2010
Flashing ROMs (...and debranding the X1)
This article will explain how to get a new firmware/ROM on your new Xperia X1.
To debrand the phone you just flash a different ROM. You also do the same thing to change from EN to GER, or to flash a customized ROM. So it's the same procedure for all of those actions (making it easier to write this tutorial ;-)).
Step 1 has to be done only once. For every following ROM you might want to flash, Step 2 is all you need to do. So let's start:
To debrand the phone you just flash a different ROM. You also do the same thing to change from EN to GER, or to flash a customized ROM. So it's the same procedure for all of those actions (making it easier to write this tutorial ;-)).
Step 1 has to be done only once. For every following ROM you might want to flash, Step 2 is all you need to do. So let's start:
Tuesday, 14 December 2010
How to flash new firmware on Zenithink ZT-180
Step 1: Download the latest firmware (check on ibeau.net or on SlateDroid)
Step 2: With the tablet turned off, connect it to your computer using the mini-USB port. (also make sure you have power connected!)
Step 3: On the tablet, hold down the Menu button and then press the Power button. You will now see a Found New Hardware popup on your computer. From the New Hardware screen you need to locate the USB driver which is located in my latest firmware download.
Note: If the device fails to install, go to device manager, click on Unknown Device, click on reinstall drivers, browse to where the USB drivers are and reinstall them.
Note 2: These drivers will only work on 32bit systems.
Step 2: With the tablet turned off, connect it to your computer using the mini-USB port. (also make sure you have power connected!)
Step 3: On the tablet, hold down the Menu button and then press the Power button. You will now see a Found New Hardware popup on your computer. From the New Hardware screen you need to locate the USB driver which is located in my latest firmware download.
Note: If the device fails to install, go to device manager, click on Unknown Device, click on reinstall drivers, browse to where the USB drivers are and reinstall them.
Note 2: These drivers will only work on 32bit systems.
Easy Root & txPower fix on Zenithink ZT-180
Easy Root & txPower fix on Zenithink ZT-180
There are a lot of people who are unfamiliar with Android and the SDK so I thought I would show you the easy way to gain root access and apply the txpower fix. If you don’t already know, the txpower fix changes the txpower value from 100 to 20 which gives you better wifi performance plus helps with temperature problems. It should also slightly increase battery life.
Follow these steps below:
Thursday, 18 November 2010
Install Tomtom 7 on PNA devices with Windows CE core 5/6
Installation instructions for WinCE5/6 devices, PNAs.Untested on 32MB devices but free memory on a 64MB device is over 32MB so should be ok.
Might work for Windows Mobile/Phone 5/6 (6.5,6.5.X) where cab installation has failed. This is untested.
Does not work on WinCE4.2 devices, These tend to be older devices.
I know it's possible to install Tomtom 7 on WinCE4.2 devices with the aid of Mortscript but to be honest there are far more reliable options out there for these devices like iGO Primo or Garmin Mobile XTCE. Go to the relevent sections on this site for more info.
Might work for Windows Mobile/Phone 5/6 (6.5,6.5.X) where cab installation has failed. This is untested.
Does not work on WinCE4.2 devices, These tend to be older devices.
I know it's possible to install Tomtom 7 on WinCE4.2 devices with the aid of Mortscript but to be honest there are far more reliable options out there for these devices like iGO Primo or Garmin Mobile XTCE. Go to the relevent sections on this site for more info.
Sunday, 31 October 2010
Almost everything about Wayteq 770 GPS navigator
I. Overview
- Processor Centrality Atlas III ARM 926T-400* MHz
- TFT 480x272 (very good)
- 2 GB internal Flash drive, RAM 64 MB
- Windows CE 5.00 (Build 1400) with SDHC support
- Ability to switch between ActiveSync(default) and Mass Storage
*In reality 324MHz; the specs from the factory are 396MHz, but never heard of any device equipped with this processor to go above 324MHz.
II. The good stuff
Given that the device supports SDHC, the first thing was to search the registry (remote, with CeRegEditor). It seemed normal to find "\Drivers\BuiltIn\SDBusDriver" and "Drivers\SDCARD" with everything beneath them. The surprise was that in the "\Windows" folder there is no "SDBus.dll" nor "SDMemory.dll", therefore the SDHC issue was solved without using these "classic" drivers. I've found "\Drivers\SDMMC" and the associated DLL, 34KB, almost double from the one present in .Net 4.2 and earlier CE5, who were without SDHC support.
- Processor Centrality Atlas III ARM 926T-400* MHz
- TFT 480x272 (very good)
- 2 GB internal Flash drive, RAM 64 MB
- Windows CE 5.00 (Build 1400) with SDHC support
- Ability to switch between ActiveSync(default) and Mass Storage
*In reality 324MHz; the specs from the factory are 396MHz, but never heard of any device equipped with this processor to go above 324MHz.
II. The good stuff
Given that the device supports SDHC, the first thing was to search the registry (remote, with CeRegEditor). It seemed normal to find "\Drivers\BuiltIn\SDBusDriver" and "Drivers\SDCARD" with everything beneath them. The surprise was that in the "\Windows" folder there is no "SDBus.dll" nor "SDMemory.dll", therefore the SDHC issue was solved without using these "classic" drivers. I've found "\Drivers\SDMMC" and the associated DLL, 34KB, almost double from the one present in .Net 4.2 and earlier CE5, who were without SDHC support.
Monday, 20 September 2010
(Aproape) totul despre WAYTEQ 770(BT)
Topicul despre WAYTEC 770 (BT) este structurat pe doua capitole:
1) Primul capitol este de interes general si cuprinde prezentarea pe scurt a acestui PNA;
2) In al doilea capitol, ce are ca tinta pe cei (mai) avansati in Windows CE si nu numai, voi prezenta cateva ciudatenii pe care le-am descoperit in saptamana de cand il am.
I.Prezentare generala
Procesor Centrality Atlas III ARM 926T -400*MHz(se afirma in prospect!)
Display TFT 480x272 (nb stralucire foarte buna, se vede excelent si pe soare puternic)
Flash disk intern de 2GB, RAM 64MB
Windows CE5.00 (Build 1400) cu suport SDHC
ActiveSync implicit, comutabil pe Mass Storage
*In realitate 324MHz; specificatiile de fabrica sunt 396MHz, insa n-am auzit de niciun aparat echipat cu acest procesor care sa mearga mai sus de 324MHz.
Nota: cand se comuta de pe ActiveSync pe Mass Storage, aparatul se reseteaza si intra in regim Mass Storage la introducerea cablului USB, numai ca pe ecran persista o imagine ce arata conexiunea si nu se poate face nimic in timpul asta; apasarea bulinei rosii din coltul dreapta-sus readuce meniul dar intrerupe legatura Mass Storage. Voi reveni cu detalii asupra acestui aspect in partea a 2-a.
Vizualizare fotografii, player audio, player video, navigatie IGO 8.0.0 FE
Suplimentar fata de acestea, varianta Wayteq 770BT are in plus:
Bluetooth – functioneaza ca HandsFree simultan cu navigatia
Modulator FM :
-in regim de navigatie si/sau hands-free transmite pe o frecventa selectabila fie vocea navigatiei fie semnalul de la telefon; permite formarea de numere pe o tastatura cat ecranul
-in regim audio-video transmite coloana sonora;
Icoanele din dreapta permit conectarea la internet prin intermediul telefonului; modalitatea de conectare (GPRS/3G) depinde de telefon
*cu softul original nu merge simultan navigatia si playerul audio, dar exista solutii pentru orice, nu-i asa? :D
II. Ciudatenii (*pentru avansati)
Dat fiind ca aparatul are suport SDHC, primul lucru a fost sa cercetez registrii (remote, cu CeRegEditor). Mi s-a parut firesc sa gasesc \Drivers\BuiltIn\SDBusDriver si corespondentul sau Drivers\SDCARD cu tot tacamul de sub el. Surpriza a fost ca in directorul \Windows nu exista nici SDBus.dll si nici SDMemory.dll, prin urmare chestiunea a fost rezolvata fara aceste drivere "clasice". Am gasit \Drivers\SDMMC si dll-ul aferent, de 34KB, cam dublu fata de fratiorul mai mic din .Net 4.2 si CE5 timpurii, care erau fara suport SDHC.
O alta chestiune intriganta a fost prezenta unei chei: \Drivers\BuiltIn\NewFlashDrive:
Mergand pe fir, gasesc o structura extrem de ciudata la definirea sistemului de fisiere:
Remarcati cheia MYFATFS ! In tabela de partitii i s-a creat un nume nou: 41 (in hex) si toate indiciile duceau catre o partitie FAT ascunsa. Am modificat cheile de protectie care o faceau ascunsa, insa nimic. Atunci am realizat ca discul flash este montat in cursul procesului de boot folosind copia registrilor aflata in ROM (Boot.hv), deci orice setare din registrii nu mai e luata in seama. Si totusi se poate, printr-un artificiu:
se pune MountHidden = DW:0 peste tot unde apare MYFATFS (definit ca “ResidentFlash2”), apoi din Storage Manager selectez “Properties” pentru partitia 01, “Dismount” si apoi “Mount”. De asta data este obligat sa citeasca registrii, drept pentru care apare un nou folder numit (cum altfel?!) ResidentFlash2. Ei bine, aici se gasesc toate programele si dll-urile ce deservesc YFLoader.exe (meniul principal, prima poza). Ba mai mult, desi YFLoader.exe face parte din ROM, el are atribut de “file” si se poate copia in voie, la fel si toate dll-urile aferente Framework 2.0 (implementat de producator) precum si o serie de alte fisiere din \Windows.
Partea frmoasa abia acum urmeaza. Discul flash are 4 partitii: P00 – 25MB, P01 – 50MB, P02 – user si P03 –hive. La limita, un ROM ar putea incapea in 25MB, dar ce este cu partitia 1? Stiu deja ca are inglobata si o partitie FAT, insa fisierele de acolo au in total 14,2 MB, deci raman cca 35MB liberi. Parca mai seamana cu dimensiunile unui ROM ;)
Pasul urmator a fost sa copiez fizic cele 2 partitii pentru a putea vedea ce e in fiecare. In mod cert una dintre ele trebuie sa contina ROM-ul, dar atunci ce e in cealalta? Copiile le-am facut tot remote, folosind “pdocread” -ul lui itsme (http://www.xs4all.nl/~itsme/projects/xda/tools.html), cel mai recent zip.
Verific rapid cu un hexeditor daca partitia 0 contine un header de ROM si constat ca el este prezent.
(O paranteza mai mare)
Procedeu (pentru cine nu stie): puneti hexeditorul sa caute in imaginea binara secventa (in hex) FE 03 00 EA si verificati daca la offsetul 0x40 se gaseste sirul ascii ECEC. Daca ambele elemente sunt prezente, in mod cert avem de-a face cu un ROM entry.
Pentru posesorii altor tipuri de aparate si vor sa experimenteze:
Se poate intampla in unele ROM-uri ca prima secventa sa nu fie prezenta. In cazul acesta cautati prima aparitie a sirului ECEC si verificati daca este sau nu o intrare valida in ROM. In primul rand, daca primul caracter din ECEC nu se gaseste intr-o adresa multiplu de 4, cautati urmatoarea sa aparitie.
Verificare: primii 4 octeti dupa "ECEC" reprezinta adresa virtuala (little endian) unde se va incarca imaginea si ar trebui sa fie de forma xx xx xx 8x. Motivul este ca adresa virtuala la care se incarca ROM-ul trebuie sa fie >= cu 0x80000000; important este sa fie >8x . Urmatorii 4 octeti (little endian) reprezinta offestul adresei fizice unde incepe headerul ROM. Aceasta trebuie sa fie o adresa rezonabila, adica pe de o parte sa fie in interiorul spatiului de 32MB si pe de alta parte sa fie in interiorul imaginii binare. Nu uitati ca un ROM poate contine imagini multiple, fiecare dintre acestea incepand cu "ECEC" si ca secventa ECEC trebuie in mod obligatoriu sa se gaseasca la o adresa multiplu de 4.
Secventa FE 03 00 EA reprezinta in cod masina o instructiune de salt neconditionat la offset 0x1000 fata de adresa primului byte (FE). Cum datele sunt in little endian, instructiunea arata de fapt EA 00 03 FE:
- bitii 31-28: conditie (in cazul nostru 0xE ,1110) = salt neconditionat
- bitii 27-25 : opcode (in cazul nostru 101 ) = salt;
- bitul 24: felul saltului (0=simplu, 1=cu retur la adresa din R14); la noi este 0, deci urmatorii 4 biti au valoarea 0xA = salt simplu fara retur
- bitul 23: semn
- bitii 22-0: offsetul unde se face saltul; inainte de executie, bitul 23 (daca e prezent) trece in carry iar bitii 22-0 sunt deplasati spre stanga cu 2 pozitii (echivalentul inmultirii cu 4) iar rezultatul se aduna la PC; acest sistem permite salt inainte sau inapoi intr-un domeniu de +-32MB
**Nota la calculul adresei ** procesorul ARM are un pipe-line de 3 instructiuni, ceea ce inseamna ca la momentul executiei efective PC a fost incrementat cu 8 (2 instructiuni).
In atare conditii, offsetul de salt va fi (0x3FE)*4 + 8 = 0x1000
(inchid marea paranteza)
Dumprom (tot de la itsme) gaseste in partitia 0 o singura imagine valida (cea a kernelului) si mai gaseste o intrare valida dar care excede spatiul partitiei P00. Acelasi dumprom in partitia P01 gaseste si cea de-a doua imagine, drept pentru care apar in directorul de lucru toate fisierele din \windows. Mai pe scurt: partitia 0 contine doar kernelul iar partitia 1 contine tot ROM-ul. Cercetand putin partitia 0, gasesc ca la adresa 0x20000 incepe un cod enorm, foarte probabil ca fiind boot loader, ce tine pana aproape de 0x180000 unde incepe ROM (doar cu kernel). Asta e o veste buna, deoarece multe PNA-uri nu poseda asa ceva, ci doar un bootstrap (un cod mititel care incarca direct sistemul de operare). Oricum, am devenit curios aspupra motivului existentei kernelului si in partitia 0, adica daca ajunge vreodata sa fie executat ori ba.
Stiind ca acest "pdocread" copiaza fizic toate datele din partitie, primul bloc are o importanta mare, desi la prima vedere pare o aiureala: aici se gaseste MBR (Master Boot Record). Nu mi-am propus sa prezint semnificatia tuturor datelor din MBR ci doar a acelora care sunt relevante cazului de fata, si anume: exista 4 seturi succesive de 16 octeti, cate unul pentru fiecare partitie. Primul set incepe la offset 0x1BE (fata de inceputul MBR). Ultimii 2 octeti dim MBR au valorile 0x55 si 0xAA, reprezentand semnatura “Boot record”.
Semnificatia celor 16 octeti aferenti unei partitii este
a) offset 0 : Indicator de boot (0x80 pentru partitie activa, 0 altfel)*
b) offset 1-3: CHS de inceput (Cylinder, Head, Sector)
c) offset 4: Descriptor pentru tipul partitiei**
d) offset 5-7: CHS de final
e) offset 8-11: Pozitia primului bloc de date din partitie [sectoare]
f) offset 12-15: Marimea partitiei, [sectoare]**
*WINCE poate sa nu respecte aceasta conventie, punandu-si incatoare proprii
**Valori raportate de Storage Manager sau alte utilitare
Mai trebuie amintit ca un sector are 512 octeti (0x200) si ca de regula datele de CHS sunt irevelante.
Dupa aceasta introducere, iata setul din MBR partitia 0:
PO c)=0x21; e)=0xC000; f)=0xC000
P1 c)=0x41; e)=CC00; f)=18000
…..
Sa vedem ce face sistemul de gestionare al fisierelor, fie ca este unul propriu boot loaderului fie ca lanseaza driverele aferente in baza unei codari directe din partitia 0 dupa hard reset: deschide MBR din p0 si citeste datele referitoare la p0 (important-creaza un handle pentru partitia 0); gaseste acolo ca sectorul de inceput este la offset 0xC000, numai ca acest sector este de fapt primul sector al partitiei 1 (lungimea totala a partitiei 0 este tot 0xC000, a se vedea valoarea f) ). Acolo gaseste tot un MBR, dar stie sa trateze problema considerandu-l un EBR (Extended Boot Record), prin urmare citeste noul set de date aferente partitiei 0:
P0 c)=0x21; e)=0xC00; f)=C000
P1 c)=0x41; e)=CC00; f=18000
……
Valoarea P0 -> e) ii spune sa mearga la offsetul 0xC00 * 0x200 = 0x180000, unde gaseste "ROM start" asa cum l-am descris mai sus. IMPORTANT: in acel moment, file managerul (oricare ar fi el) inca mai considera ca este in partitia 0, desi citeste si incarca ROM din spatiul fizic al partitiei 1!! Dupa ce se incarca sistemul, handlerul este eliberat si lucrurile reintra in normal. Raspunsul pare clar: dupa un hard reset, sistemul foarte probabil ca nu va folosi copia kernel din partitia 0 decat cel mult punctual, pt anumite drivere. Nu se stie insa ce ar face boot loaderul daca din cauza unor erori grave nu ar putea incarca ROM-ul din partitia 1 in spatiul virtual; este posibil ca in aceasta situatie sa apeleze (integral) la kernelul de rezerva, oferind utilizatorului posibilitatea refacerii partitiei 1 sub un Windows minimal dar functional. E de amintit faptul ca imaginea din partitia 0 contine inclusiv driverul pentru flash disk precum si structura integrala a registrilor cumuland fisierele boot.hv, default.hv si user.hv. Subiectul acesta ramane deschis pana cand reusesc sa vad ce face codul respectiv, banuit cu temei a fi un boot loader veritabil. Studiul codului respectiv ar putea duce si la aflarea mecanismului de activare a meniului sau, ceea ce ar insemna un mare pas inainte.
Cateva observatii despre regimul Mass Storage. Deservirea acestui mod se face de un soft dedicat, aflat in folderul ResidentFlash2, pe nume USBConnect.exe. O parte a dependentelor externe se gasesc in acelasi folder , restul (coredll.dll si mfcce400.dll) in \Windows.
Inainte de reset, meniul de comutare modifica niste chei specifice regimului mass storage / ActiveSync (HKLM\Drivers\USB\FunctionDrivers\ClientDriver: "\Drivers\USB\FunctionDrivers\Mass_Storage_Class" sau Serial_Class si DefaultClientDriver intre "\Mass_Storage_Class" sau "\Serial_Class"); mass storage va merge doar atata timp cat este activ programul USBConnect. Interesant este faptul ca acest program realizeaza conexiumea mass storage folosindu-se de un driver din suita bluetooth, mai exact de BTDRV.dll, in conditiile definite la HKLM\Drivers\BuiltIn\BTPort. In timpul conexiunii se creaza un proces activ pentru portul COM2:, mentinut doar atata timp cat programul USBConnect este in executie. Ar mai fi de adaugat ca pe durata conexiunii sistemul nu "vede" nici nand-flash si nici vreun card extern, asa ca nu e intamplator faptul ca in regim mass storage persista cu incapatanare acel ecran.
Respectivul pachet ar fi o optiune interesanta pentru aceia care isi doresc temporar o asemenea conexiune, insa este nevoie de un btdrv.dll incarcabil in memorie, deoarece cel din ROM este XIP (ii lipseste tabela de relocare). Poate ca odata voi reface aceasta tabela pentru dll-ul in cauza, dar daca cineva dintre voi este in posesia unuia care se poate incarca in RAM, sunt dispus la continuarea imediata a proiectului "mass storage".
NOTE:
1) Se poate intra direct in windows explorer FARA EDITARE DE REGISTRI sau modificari de orice fel:
-creati cu notepad sau similar in radacina unui card SD un fisier cu numele YFGo2CE.bld care sa contina macar un caracter(lungimea minima de 1 octet); ATENTIE, numele fisierului este case sensitive, luati exact denumirea pe care v-am dat-o!!!
-introduceti cardul si fie resetati prin gaura din dreapta, fie faceti hard reset din optiunea data de soft;
-dupa pornire va intra in ecranul windows
-scotand cardul si resetand din nou, revine in meniul initial
2) Puteti schimba usor imaginea de logo cu orice imagine doriti.
-selectati imaginea dorita si o aduceti exact la dimensiunea de 480x272 pixeli, apoi o salvati in format BMP cu 24 biti culoare si denumirea (!!case sensitive!!) Logo72C.bmp
-plasati imaginea in radacina unui card SD , introduceti cardul si apoi hard reset
*** dupa incarcarea imaginiii stergeti fisierul bmp, deoarece la fiecare hard reset o va incarca din nou ***
3) Cum spuneam mai sus, instalarea unui soft de navigatie de pe card prevaleaza softului propriu de pe flash disc (cititi comm-ul anterior)
4) Exista posibilitatea (extrem de simpla) a reinstalarii ROM si/sau a boot loaderului, tot de pe card SD; nu voi da numele acestor fisiere pentru a nu tenta pe nimeni de a experimenta in necunostinta de cauza. Daca cineva, vreodata, pasionat de bucataria de rom-uri, va modifica un ROM pentru a-i include programe(dll-uri) suplimentare, sa-l creeze in format .img si sa ma contacteze pe privat. De asemenea, printr-o secventa magica plasata intr-un fisier text se poate chiar formata discul intern nand... . Evident, toate acestea sunt facilitati oferite de catre boot loader.
Muncind la dezasamblarea boot loaderului (rezultatele partiale se vad deja in commul anterior), am dat peste instructiunile prin care apeleaza coprocesorul: ii zice p15 (coprocesor15) . Iata cum arata o astfel de instructiune(comentariul imi apartine):
0020138: ee110f10 mrc p15,0x0,r0,c1,c0 ;requests co-proc15 to perform op0 on c1&c0, res in r0
As mai adauga pentru cei interesati ca partitia ascunsa se poate accesa temporar deschizand cu orice explorer discul ResidentFlash si sus in bara se lipeste dupa nume cifra 2, apoi ok
Cat despre WINCE6, asta a aparut demult, deja a ajuns la versiunea 4 (wince6.4)... chiar si eu am generat cateva romuri experimentale (pt studiu) cu platform builder 6.
Precizare:
Toate trucurile prezentate se refera la WAYTEQ 770, dar pot (eventual) functiona si pe alte aparate chinezesti daca sunt indeplinite cumulativ urmatoarele conditii:
1) in \windows exista un executabil cu numele YFLoader.exe
2) este prezent directorul ascuns ResidentFlash2 si in aceast director gasiti un subdirector cu numele YFAP20, YFAP30 sau YFAPP
Nota:
Rescrii SO cu formatare. Pune langa fisierul img si un YFormat.bld care sa contina sirul "666F726D6174" fara ghilimele. Il faci cu Notepad pt ca asta nu adauga caractere de control.
1) Primul capitol este de interes general si cuprinde prezentarea pe scurt a acestui PNA;
2) In al doilea capitol, ce are ca tinta pe cei (mai) avansati in Windows CE si nu numai, voi prezenta cateva ciudatenii pe care le-am descoperit in saptamana de cand il am.
I.Prezentare generala
Procesor Centrality Atlas III ARM 926T -400*MHz(se afirma in prospect!)
Display TFT 480x272 (nb stralucire foarte buna, se vede excelent si pe soare puternic)
Flash disk intern de 2GB, RAM 64MB
Windows CE5.00 (Build 1400) cu suport SDHC
ActiveSync implicit, comutabil pe Mass Storage
*In realitate 324MHz; specificatiile de fabrica sunt 396MHz, insa n-am auzit de niciun aparat echipat cu acest procesor care sa mearga mai sus de 324MHz.
Nota: cand se comuta de pe ActiveSync pe Mass Storage, aparatul se reseteaza si intra in regim Mass Storage la introducerea cablului USB, numai ca pe ecran persista o imagine ce arata conexiunea si nu se poate face nimic in timpul asta; apasarea bulinei rosii din coltul dreapta-sus readuce meniul dar intrerupe legatura Mass Storage. Voi reveni cu detalii asupra acestui aspect in partea a 2-a.
Vizualizare fotografii, player audio, player video, navigatie IGO 8.0.0 FE
Suplimentar fata de acestea, varianta Wayteq 770BT are in plus:
Bluetooth – functioneaza ca HandsFree simultan cu navigatia
Modulator FM :
-in regim de navigatie si/sau hands-free transmite pe o frecventa selectabila fie vocea navigatiei fie semnalul de la telefon; permite formarea de numere pe o tastatura cat ecranul
-in regim audio-video transmite coloana sonora;
Icoanele din dreapta permit conectarea la internet prin intermediul telefonului; modalitatea de conectare (GPRS/3G) depinde de telefon
*cu softul original nu merge simultan navigatia si playerul audio, dar exista solutii pentru orice, nu-i asa? :D
II. Ciudatenii (*pentru avansati)
Dat fiind ca aparatul are suport SDHC, primul lucru a fost sa cercetez registrii (remote, cu CeRegEditor). Mi s-a parut firesc sa gasesc \Drivers\BuiltIn\SDBusDriver si corespondentul sau Drivers\SDCARD cu tot tacamul de sub el. Surpriza a fost ca in directorul \Windows nu exista nici SDBus.dll si nici SDMemory.dll, prin urmare chestiunea a fost rezolvata fara aceste drivere "clasice". Am gasit \Drivers\SDMMC si dll-ul aferent, de 34KB, cam dublu fata de fratiorul mai mic din .Net 4.2 si CE5 timpurii, care erau fara suport SDHC.
O alta chestiune intriganta a fost prezenta unei chei: \Drivers\BuiltIn\NewFlashDrive:
Mergand pe fir, gasesc o structura extrem de ciudata la definirea sistemului de fisiere:
Remarcati cheia MYFATFS ! In tabela de partitii i s-a creat un nume nou: 41 (in hex) si toate indiciile duceau catre o partitie FAT ascunsa. Am modificat cheile de protectie care o faceau ascunsa, insa nimic. Atunci am realizat ca discul flash este montat in cursul procesului de boot folosind copia registrilor aflata in ROM (Boot.hv), deci orice setare din registrii nu mai e luata in seama. Si totusi se poate, printr-un artificiu:
se pune MountHidden = DW:0 peste tot unde apare MYFATFS (definit ca “ResidentFlash2”), apoi din Storage Manager selectez “Properties” pentru partitia 01, “Dismount” si apoi “Mount”. De asta data este obligat sa citeasca registrii, drept pentru care apare un nou folder numit (cum altfel?!) ResidentFlash2. Ei bine, aici se gasesc toate programele si dll-urile ce deservesc YFLoader.exe (meniul principal, prima poza). Ba mai mult, desi YFLoader.exe face parte din ROM, el are atribut de “file” si se poate copia in voie, la fel si toate dll-urile aferente Framework 2.0 (implementat de producator) precum si o serie de alte fisiere din \Windows.
Partea frmoasa abia acum urmeaza. Discul flash are 4 partitii: P00 – 25MB, P01 – 50MB, P02 – user si P03 –hive. La limita, un ROM ar putea incapea in 25MB, dar ce este cu partitia 1? Stiu deja ca are inglobata si o partitie FAT, insa fisierele de acolo au in total 14,2 MB, deci raman cca 35MB liberi. Parca mai seamana cu dimensiunile unui ROM ;)
Pasul urmator a fost sa copiez fizic cele 2 partitii pentru a putea vedea ce e in fiecare. In mod cert una dintre ele trebuie sa contina ROM-ul, dar atunci ce e in cealalta? Copiile le-am facut tot remote, folosind “pdocread” -ul lui itsme (http://www.xs4all.nl/~itsme/projects/xda/tools.html), cel mai recent zip.
Verific rapid cu un hexeditor daca partitia 0 contine un header de ROM si constat ca el este prezent.
(O paranteza mai mare)
Procedeu (pentru cine nu stie): puneti hexeditorul sa caute in imaginea binara secventa (in hex) FE 03 00 EA si verificati daca la offsetul 0x40 se gaseste sirul ascii ECEC. Daca ambele elemente sunt prezente, in mod cert avem de-a face cu un ROM entry.
Pentru posesorii altor tipuri de aparate si vor sa experimenteze:
Se poate intampla in unele ROM-uri ca prima secventa sa nu fie prezenta. In cazul acesta cautati prima aparitie a sirului ECEC si verificati daca este sau nu o intrare valida in ROM. In primul rand, daca primul caracter din ECEC nu se gaseste intr-o adresa multiplu de 4, cautati urmatoarea sa aparitie.
Verificare: primii 4 octeti dupa "ECEC" reprezinta adresa virtuala (little endian) unde se va incarca imaginea si ar trebui sa fie de forma xx xx xx 8x. Motivul este ca adresa virtuala la care se incarca ROM-ul trebuie sa fie >= cu 0x80000000; important este sa fie >8x . Urmatorii 4 octeti (little endian) reprezinta offestul adresei fizice unde incepe headerul ROM. Aceasta trebuie sa fie o adresa rezonabila, adica pe de o parte sa fie in interiorul spatiului de 32MB si pe de alta parte sa fie in interiorul imaginii binare. Nu uitati ca un ROM poate contine imagini multiple, fiecare dintre acestea incepand cu "ECEC" si ca secventa ECEC trebuie in mod obligatoriu sa se gaseasca la o adresa multiplu de 4.
Secventa FE 03 00 EA reprezinta in cod masina o instructiune de salt neconditionat la offset 0x1000 fata de adresa primului byte (FE). Cum datele sunt in little endian, instructiunea arata de fapt EA 00 03 FE:
- bitii 31-28: conditie (in cazul nostru 0xE ,1110) = salt neconditionat
- bitii 27-25 : opcode (in cazul nostru 101 ) = salt;
- bitul 24: felul saltului (0=simplu, 1=cu retur la adresa din R14); la noi este 0, deci urmatorii 4 biti au valoarea 0xA = salt simplu fara retur
- bitul 23: semn
- bitii 22-0: offsetul unde se face saltul; inainte de executie, bitul 23 (daca e prezent) trece in carry iar bitii 22-0 sunt deplasati spre stanga cu 2 pozitii (echivalentul inmultirii cu 4) iar rezultatul se aduna la PC; acest sistem permite salt inainte sau inapoi intr-un domeniu de +-32MB
**Nota la calculul adresei ** procesorul ARM are un pipe-line de 3 instructiuni, ceea ce inseamna ca la momentul executiei efective PC a fost incrementat cu 8 (2 instructiuni).
In atare conditii, offsetul de salt va fi (0x3FE)*4 + 8 = 0x1000
(inchid marea paranteza)
Dumprom (tot de la itsme) gaseste in partitia 0 o singura imagine valida (cea a kernelului) si mai gaseste o intrare valida dar care excede spatiul partitiei P00. Acelasi dumprom in partitia P01 gaseste si cea de-a doua imagine, drept pentru care apar in directorul de lucru toate fisierele din \windows. Mai pe scurt: partitia 0 contine doar kernelul iar partitia 1 contine tot ROM-ul. Cercetand putin partitia 0, gasesc ca la adresa 0x20000 incepe un cod enorm, foarte probabil ca fiind boot loader, ce tine pana aproape de 0x180000 unde incepe ROM (doar cu kernel). Asta e o veste buna, deoarece multe PNA-uri nu poseda asa ceva, ci doar un bootstrap (un cod mititel care incarca direct sistemul de operare). Oricum, am devenit curios aspupra motivului existentei kernelului si in partitia 0, adica daca ajunge vreodata sa fie executat ori ba.
Stiind ca acest "pdocread" copiaza fizic toate datele din partitie, primul bloc are o importanta mare, desi la prima vedere pare o aiureala: aici se gaseste MBR (Master Boot Record). Nu mi-am propus sa prezint semnificatia tuturor datelor din MBR ci doar a acelora care sunt relevante cazului de fata, si anume: exista 4 seturi succesive de 16 octeti, cate unul pentru fiecare partitie. Primul set incepe la offset 0x1BE (fata de inceputul MBR). Ultimii 2 octeti dim MBR au valorile 0x55 si 0xAA, reprezentand semnatura “Boot record”.
Semnificatia celor 16 octeti aferenti unei partitii este
a) offset 0 : Indicator de boot (0x80 pentru partitie activa, 0 altfel)*
b) offset 1-3: CHS de inceput (Cylinder, Head, Sector)
c) offset 4: Descriptor pentru tipul partitiei**
d) offset 5-7: CHS de final
e) offset 8-11: Pozitia primului bloc de date din partitie [sectoare]
f) offset 12-15: Marimea partitiei, [sectoare]**
*WINCE poate sa nu respecte aceasta conventie, punandu-si incatoare proprii
**Valori raportate de Storage Manager sau alte utilitare
Mai trebuie amintit ca un sector are 512 octeti (0x200) si ca de regula datele de CHS sunt irevelante.
Dupa aceasta introducere, iata setul din MBR partitia 0:
PO c)=0x21; e)=0xC000; f)=0xC000
P1 c)=0x41; e)=CC00; f)=18000
…..
Sa vedem ce face sistemul de gestionare al fisierelor, fie ca este unul propriu boot loaderului fie ca lanseaza driverele aferente in baza unei codari directe din partitia 0 dupa hard reset: deschide MBR din p0 si citeste datele referitoare la p0 (important-creaza un handle pentru partitia 0); gaseste acolo ca sectorul de inceput este la offset 0xC000, numai ca acest sector este de fapt primul sector al partitiei 1 (lungimea totala a partitiei 0 este tot 0xC000, a se vedea valoarea f) ). Acolo gaseste tot un MBR, dar stie sa trateze problema considerandu-l un EBR (Extended Boot Record), prin urmare citeste noul set de date aferente partitiei 0:
P0 c)=0x21; e)=0xC00; f)=C000
P1 c)=0x41; e)=CC00; f=18000
……
Valoarea P0 -> e) ii spune sa mearga la offsetul 0xC00 * 0x200 = 0x180000, unde gaseste "ROM start" asa cum l-am descris mai sus. IMPORTANT: in acel moment, file managerul (oricare ar fi el) inca mai considera ca este in partitia 0, desi citeste si incarca ROM din spatiul fizic al partitiei 1!! Dupa ce se incarca sistemul, handlerul este eliberat si lucrurile reintra in normal. Raspunsul pare clar: dupa un hard reset, sistemul foarte probabil ca nu va folosi copia kernel din partitia 0 decat cel mult punctual, pt anumite drivere. Nu se stie insa ce ar face boot loaderul daca din cauza unor erori grave nu ar putea incarca ROM-ul din partitia 1 in spatiul virtual; este posibil ca in aceasta situatie sa apeleze (integral) la kernelul de rezerva, oferind utilizatorului posibilitatea refacerii partitiei 1 sub un Windows minimal dar functional. E de amintit faptul ca imaginea din partitia 0 contine inclusiv driverul pentru flash disk precum si structura integrala a registrilor cumuland fisierele boot.hv, default.hv si user.hv. Subiectul acesta ramane deschis pana cand reusesc sa vad ce face codul respectiv, banuit cu temei a fi un boot loader veritabil. Studiul codului respectiv ar putea duce si la aflarea mecanismului de activare a meniului sau, ceea ce ar insemna un mare pas inainte.
Cateva observatii despre regimul Mass Storage. Deservirea acestui mod se face de un soft dedicat, aflat in folderul ResidentFlash2, pe nume USBConnect.exe. O parte a dependentelor externe se gasesc in acelasi folder , restul (coredll.dll si mfcce400.dll) in \Windows.
Inainte de reset, meniul de comutare modifica niste chei specifice regimului mass storage / ActiveSync (HKLM\Drivers\USB\FunctionDrivers\ClientDriver: "\Drivers\USB\FunctionDrivers\Mass_Storage_Class" sau Serial_Class si DefaultClientDriver intre "\Mass_Storage_Class" sau "\Serial_Class"); mass storage va merge doar atata timp cat este activ programul USBConnect. Interesant este faptul ca acest program realizeaza conexiumea mass storage folosindu-se de un driver din suita bluetooth, mai exact de BTDRV.dll, in conditiile definite la HKLM\Drivers\BuiltIn\BTPort. In timpul conexiunii se creaza un proces activ pentru portul COM2:, mentinut doar atata timp cat programul USBConnect este in executie. Ar mai fi de adaugat ca pe durata conexiunii sistemul nu "vede" nici nand-flash si nici vreun card extern, asa ca nu e intamplator faptul ca in regim mass storage persista cu incapatanare acel ecran.
Respectivul pachet ar fi o optiune interesanta pentru aceia care isi doresc temporar o asemenea conexiune, insa este nevoie de un btdrv.dll incarcabil in memorie, deoarece cel din ROM este XIP (ii lipseste tabela de relocare). Poate ca odata voi reface aceasta tabela pentru dll-ul in cauza, dar daca cineva dintre voi este in posesia unuia care se poate incarca in RAM, sunt dispus la continuarea imediata a proiectului "mass storage".
NOTE:
1) Se poate intra direct in windows explorer FARA EDITARE DE REGISTRI sau modificari de orice fel:
-creati cu notepad sau similar in radacina unui card SD un fisier cu numele YFGo2CE.bld care sa contina macar un caracter(lungimea minima de 1 octet); ATENTIE, numele fisierului este case sensitive, luati exact denumirea pe care v-am dat-o!!!
-introduceti cardul si fie resetati prin gaura din dreapta, fie faceti hard reset din optiunea data de soft;
-dupa pornire va intra in ecranul windows
-scotand cardul si resetand din nou, revine in meniul initial
2) Puteti schimba usor imaginea de logo cu orice imagine doriti.
-selectati imaginea dorita si o aduceti exact la dimensiunea de 480x272 pixeli, apoi o salvati in format BMP cu 24 biti culoare si denumirea (!!case sensitive!!) Logo72C.bmp
-plasati imaginea in radacina unui card SD , introduceti cardul si apoi hard reset
*** dupa incarcarea imaginiii stergeti fisierul bmp, deoarece la fiecare hard reset o va incarca din nou ***
3) Cum spuneam mai sus, instalarea unui soft de navigatie de pe card prevaleaza softului propriu de pe flash disc (cititi comm-ul anterior)
4) Exista posibilitatea (extrem de simpla) a reinstalarii ROM si/sau a boot loaderului, tot de pe card SD; nu voi da numele acestor fisiere pentru a nu tenta pe nimeni de a experimenta in necunostinta de cauza. Daca cineva, vreodata, pasionat de bucataria de rom-uri, va modifica un ROM pentru a-i include programe(dll-uri) suplimentare, sa-l creeze in format .img si sa ma contacteze pe privat. De asemenea, printr-o secventa magica plasata intr-un fisier text se poate chiar formata discul intern nand... . Evident, toate acestea sunt facilitati oferite de catre boot loader.
Muncind la dezasamblarea boot loaderului (rezultatele partiale se vad deja in commul anterior), am dat peste instructiunile prin care apeleaza coprocesorul: ii zice p15 (coprocesor15) . Iata cum arata o astfel de instructiune(comentariul imi apartine):
0020138: ee110f10 mrc p15,0x0,r0,c1,c0 ;requests co-proc15 to perform op0 on c1&c0, res in r0
As mai adauga pentru cei interesati ca partitia ascunsa se poate accesa temporar deschizand cu orice explorer discul ResidentFlash si sus in bara se lipeste dupa nume cifra 2, apoi ok
Cat despre WINCE6, asta a aparut demult, deja a ajuns la versiunea 4 (wince6.4)... chiar si eu am generat cateva romuri experimentale (pt studiu) cu platform builder 6.
Precizare:
Toate trucurile prezentate se refera la WAYTEQ 770, dar pot (eventual) functiona si pe alte aparate chinezesti daca sunt indeplinite cumulativ urmatoarele conditii:
1) in \windows exista un executabil cu numele YFLoader.exe
2) este prezent directorul ascuns ResidentFlash2 si in aceast director gasiti un subdirector cu numele YFAP20, YFAP30 sau YFAPP
Nota:
Rescrii SO cu formatare. Pune langa fisierul img si un YFormat.bld care sa contina sirul "666F726D6174" fara ghilimele. Il faci cu Notepad pt ca asta nu adauga caractere de control.
ROM DUMP - A practical guide
Note: All credit goes to ablbd. This is just a translation.
This article will focus on practical methods to make a backup copy of your device's ROM image.
In the case of a PNA/PDA, the "ROM (Read Only Memory)" is actually placed on a rewritable medium. Manufactures (especially for the PDA and iPhone) publish on their own sites from time to time upgrades for their devices. For instance, you can buy a device with WINCE5 and later they offer you the possibility to upgrade to WINCE6 or even above. What those companies publish is a new ROM which will replace the old one, offering improvements and superior performances.
To ensure that a ROM image can be boot-able, it needs to fulfill some conditions:
- to have the format that the boot-loader is waiting for.
- to have a name that the boot-loader it recognizes and accepts; in principle, a particular type of device can claim a specific "case sensitive" name.
- the boot-loader must be intact.
This article will focus on practical methods to make a backup copy of your device's ROM image.
In the case of a PNA/PDA, the "ROM (Read Only Memory)" is actually placed on a rewritable medium. Manufactures (especially for the PDA and iPhone) publish on their own sites from time to time upgrades for their devices. For instance, you can buy a device with WINCE5 and later they offer you the possibility to upgrade to WINCE6 or even above. What those companies publish is a new ROM which will replace the old one, offering improvements and superior performances.
To ensure that a ROM image can be boot-able, it needs to fulfill some conditions:
- to have the format that the boot-loader is waiting for.
- to have a name that the boot-loader it recognizes and accepts; in principle, a particular type of device can claim a specific "case sensitive" name.
- the boot-loader must be intact.
Saturday, 11 September 2010
Links
XDA-Developers Forum
http://forum.xda-developers.com/
XDA-Developers Wiki
http://forum.xda-developers.com/wiki/index.php?title=Main_Page
Windows Mobile 6.5 Developer Tool Kit
http://www.microsoft.com/downloads/en/details.aspx?familyid=20686A1D-97A8-4F80-BC6A-AE010E085A6E&displaylang=en
I've bricked my 4.3" Tevion GPS (ROM dumping, editing, flashing)
http://www.gpsaustralia.net/forums/showthread.php?t=13050&page=1&pp=15
Manufacturer site / firmware (forum on www.dealextream.com)
http://www2.dealextreme.com/forums/Forums.dx/Page.1~Forum.33231~threadid.593550
Eng WinCE 6 with Control Panel and ResidentFlash2
http://www2.dealextreme.com/forums/Forums.dx/Page.2~Forum.37914~threadid.686192
A collection of tools to do many things to a windows CE device via Activesync/RAPI.
http://www.xs4all.nl/~itsme/projects/xda/tools.html
Sanyo 4370 and Mio pocket install help
http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=123189&whichpage=19
Extract fat image from flashrom/filesystem (forum - good stuff)
http://buzzdev.net/viewtopic.php?f=33&t=34479
.nb to .bin conversion
http://www.hpcfactor.com/forums/forums/thread-view.asp?tid=14703&start=1
Hacking tools
http://hpcmonex.net/izemize.htm
EverGrow (firmware downloads - NOT compatible with every device)
http://www.evergrowtek.com/en-us/Download.asp
ImageSearchEditor (how to replace .bmp resources)
http://www.microsofttranslator.com/bv.aspx?from=th&to=en&a=http%3A%2F%2Fpdamobiz.com%2Fforum%2Fforum_posts.asp%3FTID%3D318115%26PN%3D1
The Chinese GPS Firmware Thread
http://www.austech.info/gps/40751-chinese-gps-firmware-thread.html
Dump, Extract and Build a Rom for Windows Mobile
http://www.bytetips.com/how-to-extract-and-build-a-rom-for-windows-mobile/
grab_it - invisible ROM dumper
http://forum.xda-developers.com/showthread.php?t=238945
ROM cooking PNA Plenio VXA-3000/VXA-2100
http://www.hpcfactor.com/forums/forums/thread-view.asp?tid=13923&start=1
Platform Builder: Converting a Nk.bin into NK.nb0
http://www.itxembedded.com/ArticleWindowsCE/ShowArticle.aspx?ID=47&AspxAutoDetectCookieSupport=1
ChinaVasion Download Updates
http://download.chinavasion.com/
WayteQ x920BT-x820 (branded YF International GPS)
http://romania-inedit.3xforum.ro/post/361597/1/WayteQ_x920BT_-x820/
Wayteq X950
http://romania-inedit.3xforum.ro/post/382691/1/Wayteq_X950/
MTK GPS
http://drop.io/mtkgpscn - http://www.microsofttranslator.com/bv.aspx?from=&to=en&a=http%3A%2F%2F4pna.com%2Fshowthread.php%3Fp%3D42241
Something... shared (search for FW_MTK_YG2GB)
http://www.4shared.com/dir/10532634/d975d88f/sharing.html
XDevice.ru
http://www.xdevice.ru/support/firmware/firmware.php
DiskRW
DiskRW
http://forum.xda-developers.com/
XDA-Developers Wiki
http://forum.xda-developers.com/wiki/index.php?title=Main_Page
Windows Mobile 6.5 Developer Tool Kit
http://www.microsoft.com/downloads/en/details.aspx?familyid=20686A1D-97A8-4F80-BC6A-AE010E085A6E&displaylang=en
I've bricked my 4.3" Tevion GPS (ROM dumping, editing, flashing)
http://www.gpsaustralia.net/forums/showthread.php?t=13050&page=1&pp=15
Manufacturer site / firmware (forum on www.dealextream.com)
http://www2.dealextreme.com/forums/Forums.dx/Page.1~Forum.33231~threadid.593550
Eng WinCE 6 with Control Panel and ResidentFlash2
http://www2.dealextreme.com/forums/Forums.dx/Page.2~Forum.37914~threadid.686192
A collection of tools to do many things to a windows CE device via Activesync/RAPI.
http://www.xs4all.nl/~itsme/projects/xda/tools.html
Sanyo 4370 and Mio pocket install help
http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=123189&whichpage=19
Extract fat image from flashrom/filesystem (forum - good stuff)
http://buzzdev.net/viewtopic.php?f=33&t=34479
.nb to .bin conversion
http://www.hpcfactor.com/forums/forums/thread-view.asp?tid=14703&start=1
Hacking tools
http://hpcmonex.net/izemize.htm
EverGrow (firmware downloads - NOT compatible with every device)
http://www.evergrowtek.com/en-us/Download.asp
ImageSearchEditor (how to replace .bmp resources)
http://www.microsofttranslator.com/bv.aspx?from=th&to=en&a=http%3A%2F%2Fpdamobiz.com%2Fforum%2Fforum_posts.asp%3FTID%3D318115%26PN%3D1
The Chinese GPS Firmware Thread
http://www.austech.info/gps/40751-chinese-gps-firmware-thread.html
Dump, Extract and Build a Rom for Windows Mobile
http://www.bytetips.com/how-to-extract-and-build-a-rom-for-windows-mobile/
grab_it - invisible ROM dumper
http://forum.xda-developers.com/showthread.php?t=238945
ROM cooking PNA Plenio VXA-3000/VXA-2100
http://www.hpcfactor.com/forums/forums/thread-view.asp?tid=13923&start=1
Platform Builder: Converting a Nk.bin into NK.nb0
http://www.itxembedded.com/ArticleWindowsCE/ShowArticle.aspx?ID=47&AspxAutoDetectCookieSupport=1
ChinaVasion Download Updates
http://download.chinavasion.com/
WayteQ x920BT-x820 (branded YF International GPS)
http://romania-inedit.3xforum.ro/post/361597/1/WayteQ_x920BT_-x820/
Wayteq X950
http://romania-inedit.3xforum.ro/post/382691/1/Wayteq_X950/
MTK GPS
http://drop.io/mtkgpscn - http://www.microsofttranslator.com/bv.aspx?from=&to=en&a=http%3A%2F%2F4pna.com%2Fshowthread.php%3Fp%3D42241
Something... shared (search for FW_MTK_YG2GB)
http://www.4shared.com/dir/10532634/d975d88f/sharing.html
XDevice.ru
http://www.xdevice.ru/support/firmware/firmware.php
DiskRW
DiskRW
Friday, 3 September 2010
China GPS (YF) - Adding a new item in the menu
Tasks:
- Backup the PNA's registry
- Change the default skins to add new button
The first thing we should do is to make the "Resident Flash2" drive visible (it's hidden by default), and to save the contents of the registry (in case something goes wrong)!
Preparations:
Download CeRegEditor from here and install it. We are going to use it to edit the WinCE registry.
If you have Windows XP, download and install Microsoft ActiveSync 4.5. For Vista or Windows 7, you need Microsoft Windows Mobile Device Center.
- Backup the PNA's registry
- Change the default skins to add new button
The first thing we should do is to make the "Resident Flash2" drive visible (it's hidden by default), and to save the contents of the registry (in case something goes wrong)!
Preparations:
Download CeRegEditor from here and install it. We are going to use it to edit the WinCE registry.
If you have Windows XP, download and install Microsoft ActiveSync 4.5. For Vista or Windows 7, you need Microsoft Windows Mobile Device Center.
Subscribe to:
Posts (Atom)