Saturday, November 27, 2010
Wednesday, November 24, 2010
Toshiba Recovery TAF Files 東芝リカバリ
I upgraded a Toshiba TW720LL to Windows 7 and lost all the configuration utilities; plus I also deleted the recovery partition in the process. Fortunately, I created a ghost image of the disk before installing. I wanted to use the setup files on the Windows partition but they were accidentally deleted to make more free space. I didn't want to restore the laptop back to the old windows to recover the setup files so I loaded the disk in VMware and tried to create a recovery CD. However, the program (RDCLcher) to create the CD also was also accidentally removed.
So I resorted to try extract the TAF image files on the hidden, recovery partition. TAF files, I discovered, are proprietary to Toshiba but looking at the decompression executable, it appears to be a wrapper for zlib.
Given more time, I may attempt to reverse engineer the wrapper. I opted to use the decompression tool as is to extract the TAF files. The tool was quite integrated with the recovery process. Being such, it was easier to persuade the recovery process to extract the files for me.
The recovery partition is bootable once it is set active. The recover process begins on boot but will restart when the DMI check does not find Toshiba hardware. There are two files that need to be modified for the recovery to work. The first file is recovery.bat in /bin and the second file is data.ini in /.
Above is what recovery.bat should look like. Edit out all checks like DMI and error returns.
In data.ini, CDNUM and CDMAX should be changed to 1. It should be noted that I extracted the recovery partition and mounted it as a CD. Upon booting the CD, all checks should pass and allow the recovery process to progress.
Here is the RDCLcher and Sonic software in case anyone accidentally removed theirs too.
http://rapidshare.com/files/432796544/toshiba_recovery.zip
*will be taken down upon request
So I resorted to try extract the TAF image files on the hidden, recovery partition. TAF files, I discovered, are proprietary to Toshiba but looking at the decompression executable, it appears to be a wrapper for zlib.
Given more time, I may attempt to reverse engineer the wrapper. I opted to use the decompression tool as is to extract the TAF files. The tool was quite integrated with the recovery process. Being such, it was easier to persuade the recovery process to extract the files for me.
The recovery partition is bootable once it is set active. The recover process begins on boot but will restart when the DMI check does not find Toshiba hardware. There are two files that need to be modified for the recovery to work. The first file is recovery.bat in /bin and the second file is data.ini in /.
Above is what recovery.bat should look like. Edit out all checks like DMI and error returns.
In data.ini, CDNUM and CDMAX should be changed to 1. It should be noted that I extracted the recovery partition and mounted it as a CD. Upon booting the CD, all checks should pass and allow the recovery process to progress.
Here is the RDCLcher and Sonic software in case anyone accidentally removed theirs too.
http://rapidshare.com/files/432796544/toshiba_recovery.zip
*will be taken down upon request
Wednesday, November 17, 2010
Toshiba Laptop TW/720LL CPU Upgrade
The Toshiba TW/720LL laptop came stock with a Dothan Celeron M 1.4GHz CPU (SL8ML). I wanted to upgrade it to a faster Pentium M class CPU so I get the SpeedStep feature along with a minor boost in computation speed. Both the Pentium and Celeron are from the same Dothan architecture; so in theory, the upgrade is a simple switcheroo.
The chipset in the laptop is an ATI Radeon Xpress 200M. I had a difficult time looking for the specs to determine compatible processors. In the end, after looking at other brands with the same chipset with different CPU combination, I was certain chipset would work with both 400FSB and 533FSB CPUs.
I purchased a Pentium M 1.89GHz CPU (SL7S9) for $10 on eBay. A 2GHz+ processor would be ideal but that one was the least expensive.
http://www.irisvista.com/tech/laptops/Toshiba_Satellite_M55/laptop_motherboard_1.htm
The TW/720LL chassis is the same one as the Satellite M50/M55 laptop. Following the dissassembly guide, I replaced the CPU. Once complete, the laptop was able to boot and displayed the Pentium M logo instead of Celeron. =)
東芝 アップグレード
The chipset in the laptop is an ATI Radeon Xpress 200M. I had a difficult time looking for the specs to determine compatible processors. In the end, after looking at other brands with the same chipset with different CPU combination, I was certain chipset would work with both 400FSB and 533FSB CPUs.
I purchased a Pentium M 1.89GHz CPU (SL7S9) for $10 on eBay. A 2GHz+ processor would be ideal but that one was the least expensive.
http://www.irisvista.com/tech/laptops/Toshiba_Satellite_M55/laptop_motherboard_1.htm
The TW/720LL chassis is the same one as the Satellite M50/M55 laptop. Following the dissassembly guide, I replaced the CPU. Once complete, the laptop was able to boot and displayed the Pentium M logo instead of Celeron. =)
東芝 アップグレード
Monday, November 15, 2010
WordPress: Independent Homepage/Separate Home & Posts Page
I wanted to create a custom home/index (non-template) page for WordPress while having it serve other pages under the root directory. To my knowledge, this is not well documented and Google search results are of solutions that are rather "hacked" and require more work than required. There are two main steps to get this working.
1. Create 2 blank pages: home and blog. In wp-admin/settings/reading, set the "front page displays" like this.
2. Go to the folder of your theme and add the custom homepage file named front-page.php. This depends on the theme being used. For mine, it is located in /wp-content/themes/twentyten/front-page.php.
Once done, the home page should render the front-page.php without any templates and the blog at the registered permalink with the template/theme chosen.
1. Create 2 blank pages: home and blog. In wp-admin/settings/reading, set the "front page displays" like this.
2. Go to the folder of your theme and add the custom homepage file named front-page.php. This depends on the theme being used. For mine, it is located in /wp-content/themes/twentyten/front-page.php.
Once done, the home page should render the front-page.php without any templates and the blog at the registered permalink with the template/theme chosen.
Thursday, June 17, 2010
Supermicro X7DAE + Windows 7 = high DPC latency
I recently installed Windows 7 on a system with the Supermicro X7DAE motherboard. Once installed, anytime I tried to play any type of audio the sound would crackle. Initial google searches appeared to blame my Create XFI sound card. However, upon further testing using the Windows performance analysis tool, the motherboard seems to be at fault. The SMBus controller seemed to be saturating the bus for some reason. Once the device is disabled in device manager, DPC latency and audio return to normal.
Sunday, April 25, 2010
Power Supply Woes
In recent power surge and outage, the Seasonic SS-400ET power supply I had for about a year would not boot up. The power led on the motherboard blinked but nothing happened when I pushed the power button.
I knew Seasonic made reliable power supplies but dying over one power surge is unacceptable. Shipping it back for RMA would cost about the same as getting a new one, so I decided to open it up and fix it. I would suspect capacitor problems with cheaper power supplies but nonetheless I checked the capacitors. Low and behold, the standby power capacitor had bulged slightly. It appeared that the surge just stressed it enough to pop it.
Once it was replaced, it booted right up again.
I knew Seasonic made reliable power supplies but dying over one power surge is unacceptable. Shipping it back for RMA would cost about the same as getting a new one, so I decided to open it up and fix it. I would suspect capacitor problems with cheaper power supplies but nonetheless I checked the capacitors. Low and behold, the standby power capacitor had bulged slightly. It appeared that the surge just stressed it enough to pop it.
Once it was replaced, it booted right up again.
ラベル:
power supply,
repair
Monday, April 5, 2010
Beagleboard & QNX: GPIO Interrupts
This is a short guide on how to use the GPIO interrupts on the Beagleboard running QNX.
My setup:
Beagleboard C3
512MB SD boot
4-port USB 2.0 hub
linksys USB 1.1 100TX adapter (for debug through momentics IDE)
references required:
Create a new QNX project to test the interrupt handler. GPIO5 lines share IRQ 33, so I would need to check the irqstatus of each line if I use more than one interrupt.
I will make a more complete guide later on... feel free to comment or email questions.
My setup:
Beagleboard C3
512MB SD boot
4-port USB 2.0 hub
linksys USB 1.1 100TX adapter (for debug through momentics IDE)
references required:
- Beagleboard technical reference - http://beagleboard.org/resources
- OMAP3530 techinical reference manual (TRM) - http://focus.ti.com/docs/prod/folders/print/omap3515.html
- change mux to get GPIO signals (/src/hardware/startup/boards/omap3530/init_pinmux.c)
- add interrupt triggers (edge/level)
- write interrupt handler
/* ################GPIO5 SETUP################### */
/* MMC2 CLK */
pad = in32(CONTROL_PADCONF_MMC2_CLK) & 0x0000ffff;
out32(CONTROL_PADCONF_MMC2_CLK, pad | INPUTENABLE1 | PULLTYPE1_UP | PULLUDENABLE1 | MUXMODE1_MODE4);
/* MMC2 CMD */
pad = in32(CONTROL_PADCONF_MMC2_CLK) & 0xffff0000;
out32(CONTROL_PADCONF_MMC2_CLK, pad | INPUTENABLE0 | PULLTYPE0_UP | PULLUDENABLE0 | MUXMODE0_MODE4);
/* GPIO IRQ */
out32(OMAP3530_GPIO5_BASE + OMAP2420_GPIO_RISINGDETECT, (1 << 2)|(1 << 3));
out32(OMAP3530_GPIO5_BASE + OMAP2420_GPIO_FALLINGDETECT, (1 << 2)|(1 << 3));
Create a new QNX project to test the interrupt handler. GPIO5 lines share IRQ 33, so I would need to check the irqstatus of each line if I use more than one interrupt.
#define GPIO5_IRQ 33In my example you have to reset 2 status registers to have the interrupts trigger again. After count++, add:
int count;
int error;
struct sigevent event;
const struct sigevent *
isr_handler (void *arg, int id)
{
return (&event);
}
void *
int_thread (void *arg)
{
// enable I/O privilege
ThreadCtl (_NTO_TCTL_IO, 0);
// attach the ISR to IRQ
if (InterruptAttach (GPIO5_IRQ, isr_handler, NULL, 0, _NTO_INTR_FLAGS_TRK_MSK) == -1) {
error = 1;
}
while (1)
{
InterruptWait (NULL, NULL);
count++;
}
}
int main(int argc, char *argv[]) {
event.sigev_notify = SIGEV_INTR;
printf("Creating interrupt thread...\n");
pthread_create (NULL, NULL, int_thread, NULL);
delay(5);
while(!error) {
printf("count=%i\n", count);
fflush(stdout);
sleep(1);
}
return EXIT_SUCCESS;
}
out32(omap3530_intc_base + 0xa8, 0x2);
out32(GPIO5 + OMAP35XX_GPIO_IRQSTATUS1, in32(GPIO5 + OMAP35XX_GPIO_IRQSTATUS1) | 0xFFFFFFFF);
I will make a more complete guide later on... feel free to comment or email questions.
ラベル:
beagleboard,
omap 3530,
qnx
Subscribe to:
Posts (Atom)