Please remember to add a category to the bottom of each page that you create.
See categories help for further details, but most will probably be [[Category:HTC ModelName]].

SPL

From XDA-Developers
Jump to: navigation, search

Please note this Wiki page is focused on SPL for Kaiser/Tilt/TyTn II devices.

Go here for the discussion thread.

What is the SPL? (Second Program Loader)

The SPL is mainly a bootloader which allows a ROM to be flashed onto your device. It is loaded into system RAM by the Initial Program Loader (IPL). As has been uncovered recently (or known to the more astute longer) the SPL does more than just load and boot the ROM it sets various flags which can control the operation of the OS on the device. It also controls some operations between the OS and the device's hardware. SPLs come paired with shipped (or leaked) official ROMs and are meant to match the ROMs operation. Therefore, with each new ROM release there is likely to be a new SPL. As you read on you will learn more about the SPL...

What types of SPLs are there?

Basically there are two main types of SPLs. Hard and Soft.

A HardSPL is one that is permanently flashed in your device memory and will boot up every time your device boots. To get into your SPL or Bootloader on the Kaiser/Tilt you want to hold down the camera button (all the way) and then soft-reset the phone (or turn it on if it was off). You will then see a tri-color screen known as the Bootloader (a.k.a. the SPL). The SPL that is shipped with your device, or upgraded from an official ROM is a Hard SPL. In short, if it is loaded into your device's firmware, and survives a hard-reset it is considered Hard.

A SoftSPL is a stand alone .exe that is run on your device from within the OS. It basically changes your OS from running Windows, to initializing the boot loader. A Soft SPL is only loaded into RAM temporarily and will not survive a hard-reset. To understand more about these, read on...

Why is there more than one type of SPL?

The reason there are the two types of SPLs is to allow flashing of ROMs that are not from the vendor or region your phone is from. Most notably, they can allow you to use "cooked" ROMS.

There are actually two types of HardSPLs:

The SPLs that are loaded on your phone by your vendor's ROM. These are the "default" SPLs. You can most closely associate them with the "BIOS" that is shipped with a PC. The limitation of these SPLs is as I state above; they won't let you load ROMs from other people/vendors. In addition when you flash a newer ROM from your vendor your SPL can get overwritten on your device (in essence, the vendor is doing a "firmware" upgrade to your "BIOS"). The second type of HardSPL is truly HARD. These are the "cooked" SPLs that have been provided to us by OliPof and JockyW. These are special hacked versions of the original vendor SPLs that allow for two things: They bypass the vendor checks on ROMs, allowing you to load any ROM onto your device. This is a necessity if you want to run a cooked ROM. They disable overwrite of the current SPL. This is why I say they are truly HARD. So, even if your ROM comes with a new SPL, it won't overwrite your HardSPL. This is both a blessing and a curse as we will see later on. Why then Soft SPLs?

Soft SPLs are really only around because of the issue mentioned above with the HardSPLs. What if you need to flash a new SPL? HardSPL disables this as I mention. So, SoftSPLs were made to allow you to temporarily load a SPL/Bootloaded from an executable on your device to change your SPL. These SoftSPLs have the overwrite enabled which makes this possible.

NOTE: You should never use a SoftSPL to flash a full ROM to your device. You should only use them to flash a new SPL and once the new SPL is on your device, then flash the ROM!

There are two main SoftSPLs you will find. SSPL-KAIS is a SoftSPL written specifically for the Kaiser and JumpSPL which is a generic SoftSPL to use on multiple devices. For most people SSPL-KAIS will work however some will need to use JumpSPL. For more info, read on....

Why would I want to change my SPL?

As mentioned above if you want to run a "cooked" ROM on your device then you will need to load an SPL that allows that ROM to be loaded. You have two choices: Load one of the hacked HardSPLs (permanently) on your phone to allow you to flash any ROM Using a Soft SPL (temporarily), load an SPL onto your phone (permanently)that matches the ROM you want to load. Then load your ROM. NOTE: By permanently I mean persistent, in that it is "flashed" on your device and will survive even a hard reset. Temporarily means it is only loaded into RAM.

Choice one is usually easier, but it has some drawbacks that we will cover later. Choice two is generally the best, but it is more time consuming. Not only do you need to flash a different SPL with each ROM, but you also need to extract this SPL from the ROM first and load it separately. Only after it is loaded can you then flash the full ROM. In all honestly very few people actually use this technique, but I believe it is becoming more prevalent. I will provide/link to information on how to extract an SPL later on in this thread.

DOUBLE NOTE: You should never use a SoftSPL to flash a full ROM to your device. You should only use them to flash a new SPL and once the new SPL is on your device, then flash the ROM! This is why you need to extract the SPL and flash it first and then once it is "HARD" on your device you can flash the ROM.


Why would I want to change my SPL back after I HardSPL?

Up until a week ago the answer you would have probably gotten is "you wouldn't." However with the release of the Official 6.1 HTC ROM there has been alot of speculation, and some real data inferring that for best performance of a ROM you should use the SPL that came with a ROM or at the very least (to put it another way) you should use a newer SPL with a newer ROM.

There is no definitive proof or specific results that can show you how one SPL will make your device perform over another. I believe I have conducted the most "scientific" experiments on this to date which you can find here. However which SPL you use is up to you based on how you feel it makes the device operate. I recommend however that you use either one of the HardSPLs or the SPL that came with your ROM. It is not recommended (at this point) to run your ROM with an SPL that is not matched to it.

So how do I change my SPL?

If you have a new device and want to first put a HardSPL on the device so that you can load and try cooked ROMs, then you should follow the procedures given by the creators of the HardSPL. Below are the two HardSPLs and links to their instructions: OliPof's HardSPL JockeyW's HardSPL - look under the section in the first post titled "HardSPL with AT Command Interpreter Support" The above links provide good instructions, but you may want to read on for more assistance.

Assuming you already have a HardSPL on your phone and want to flash to another SPL (for instance to flash the SPL that came with your ROM), there is a slightly different procedure. Basically you will need to get your hands on the proper SPL and then use a SoftSPL to load this onto the phone.

This procedure is actually the same procedure you would use if you wanted to revert back to the SPL that actually came with your phone. Luckily, Sirsycho has written a fantastic guide which explains this process. And, since I don't want to duplicate his efforts, you can find that guide here.

SirSycho provides instructions not only how to flash another Hard SPL using a Soft SPL, but also provides instructions on how to extract an SPL from a ROM. You can use those same procedures to extract an SPL from any ROM. So, in other words, you can use these procedures to flash ANY SPL, not just to revert back to your original SPL...that is just one example.

Now, for some caveats on the above procedure:

The main problem you will likely encounter is when trying to run the SSPL-KAIS.exe on your device. Some users have found that instead of getting the tri-color bootscreen when running this application, that the screen goes white. Although the exact reasons for this are not fully known, there is a solution which JockyW has provided us in this thread.

I would like to make a few amendments/comments to his instructions based on my experiences. The first is that I have found that you don't need to remove you SIM card, but you do need to remove your SD card. The second is that JumpSPL1.56-KAIS.exe will probably not work, so just use JumpSPL1.93-KAIS.exe instead.

Also, step 4 and 5 are very important. Once you have launched JumpSPL you will see, after a few seconds, "USB" appear on the bottom white of the bootloader screen. If it doesn't show then either your device is not plugged into your USB port OR your SD card is still in the device. Remember that once is displays "USB" you want to unplug your USB connection and then reconnect it a few seconds later. No message will display when you plug your USB back in, and ActiveSync will not start (if it does start you should worry!) so assume that everything is ok and continue on.

Using the above procedures you should be able to flash between different SPLs with ease. To summarize I will go through the procedure I use to quickly flash between SPLs. Remember to read the above links first so you understand the tools and basic procedures:

  1. Get the SPL file (in .NBH format) that i want to flash along with the KaiserCustomRUU.exe and put it in a folder on my PC.
  2. Plug my device into my PC
  3. Copy JumpSPL1.93-KAIS.exe to my device. I use JumpSPL because I have the "White Screen" issue, if you don't, you can use SSPL-KAIS.exe.
  4. Take out my SD card
  5. Run JumpSPL1.93-KAIS.exe on my device
  6. Wait for the bootloader screen to appear and "USB" to show.
  7. Unplug my device from the USB port, wait 5 seconds, plug it back in.
  8. Run KaiserCustomRUU.exe and flash the SPL

I use this procedure to flash between any Stock/Official SPLs and HardSPL. JockyW's has provided the stand-alone HardSPL nbh file here flash-HardSPL.zip.

So why do I need to do all this back and forth flashing anyway and what does it really mean?!?!

Ah, yes, so this is what it comes down to and a point of confusion among many users currently. The fact is that if you are happy running one particular ROM, you should probably just flash the SPL that shipped with that ROM (in the case of a cooked ROM, use the SPL that shipped with the base ROM). However, if you are a flashing junky and want to keep switching, then you need to do some work.

Also, let me point out that you can just stick with either the OliPof or JockyW HardSPL and flash/run whatever ROM you want. If however you believe you are experiencing some of the freezing/lagging issues that some report being due to mismatched SPLs then you will want to follow the above procedures.

The reason of switching back and forth between different SPLs is if you want the best of both worlds. Meaning you want to flash multiple ROMs AND you want a matched SPL for stability/performance. If this is the case you will need to reflash JockyW's or OliPof's HardSPL everytime you want to flash a new ROM.*

The reasoning is that those HardSPLs are what allows you to flash a ROM not originally meant for your device (from your vendor/region). Once you have flashed the HardSPL you can then flash your ROM. Once your ROM is flashed, you can then flash the SPL which matches that ROM to ensure stability. However, if you want to flash a new ROM, you have to go back to the beginning and flash the HardSPL again to allow you to load another ROM!*

  • Technically you can do the procedure in a different manner as I mention at the beginning of the thread. If you want to extract the SPL file and package it up as an NBH (as explained in SirSycho's thread). Then you can just run my procedure above and flash the ROM's SPL file first. Then, once that ROM's SPL is on your phone you should be able to load the ROM. However, it is often difficult to determine which is the correct SPL to a cooked ROM that didn't come with an SPL therefore you may want to stick to the HardSPL procedure.

So where do we go from here?

Well, at the moment this is where we are at. We are still investigating the full effects of what an SPL can do to vary the performance of an OS. For now there is a large consensus that the newer HTC 6.1 ROM SPL seems to work well for most of the newer 6.1 ROMS (stock and cooked). You can get that SPL file here if you'd like to try it.

At this time, we are also stuck doing the described procedures of flashing and reflashing SPLs everytime you want to load a new ROM (assuming you want to use that ROM's SPL). However JockeyW has graciously agreed to look into creating some new "hacked" HardSPL's based off of the newer SPLs! Currently he is working on the Official HTC 3.28.0000 SPL. If we are lucky we may see something within the next week. As more is discovered about how the SPLs work we may see some more work done on this front by him and others.

With that said, I would like to thank:
JockyW - for all his past and current creations
OliPro - for the original 'hacked' HardSPL
Pof - for his work on Kaiser SPLs
SirSycho - for his thread on reverting back to other SPLs
Shafez and RPG0 - for bringing greater exposure to the current SPL issues
And anyone else who originated information contained in this thread (PM me if you did so I can credit you!).