Well I will not turn down a helping fellow that's for sure! Code repo is here: https://bitbucket.org/psyko_chewbacca/lpcmod_os I make lots of updates these days as I work on it from multiple machines at different location. I'm babysitting my mom's cat while she's away. I think it would be best to not work on the same things for the time being. One thing that I don't know where to start is concerning the networking module of the code, LWIP. There seems to be some issues at replying to ARP requests. This makes impossible to connect to the Xbox without manually adding an ARP entry to your cache on your computer(once you do that it works 100%)... Maybe it's my network setup but it's pretty standard and every other device on it work just fine. Right now I'm on HDD interface. Formatting the HDD works, even creating 64KB cluster partitions. The only downside is that everything work in PIO. I did implement WRITE MULTIPLE ATA commands in the driver to speed up things(only sector-by-sector writes was implemented initially) a little but it's not acceptable. It takes a little less than 3 minutes to quick-format a 940GB partition. Looks like I will have to implement DMA after all. I'm not a pro at this, in fact I'm learning as I code but I'll get there for sure; unless you tell me that's something you feel more comfortable doing! Anyway take the time to browse the code, I make sure to try and comment every piece of code I write or modify. You can easily use eclipse CDT to develop as long as you have gcc-3.3 in your PATH. There's still a lot to do but much of what I initially planned is there. It's also possible to flash the bin file to *almost* any modchip. Saving settings to flash will work as long as it can block-erase. I'll be probably making a beta release of it this weekend. People will be able to flash it to their modchip or run it as a XBE. I made sure it wouldn't break anything but it's still in development so misfires can happen! A lot of cool stuff will be readily available like 128MB RAM tester, HDD formatting (slow because of PIO) and LCD support for all SmartXX chips (only tested with OPX) and Xecuter 3! Unfortunately, SmartXX chips use a write protect mechanism on their flash chip I did not reverse right now so it's not possible to save settings with it...
Sorry, I did not post anything this weekend like I said I would... Went on a hiking trip with a few friends instead. Will release binaries tonight. I did have time to ponder on why HDD transfer rates were so slow. The ATA host controller interface must also be set to work at faster timing modes. The only problem is that it looks like the MCPX chipset does not use standard registers in the PCI configuration space for IDE controllers as defined in the "standard" set by the T13 commitee... Looking at Xbox Kernel's source code does not provide much more information. Source file ./Microsoft Xbox (1.00.4400) [April 2002] [src]/XBOX/private/ntos/halx/i386/pcisetup.c, line 65 contains the initialization of that controller but just blindly sends hardcoded values to undocumented registers... Not much help. I might have more luck looking into the Linux Kernel source code for MCP-D(PC equivalent part) IDE controller initialization. If anyone can find the datasheet for these chips would help me greatly!
Hello, Here it is as promised: https://dl.dropboxusercontent.com/u/7092024/XBlast_OS_v0.1beta.zip It's late and I took a lot of time to write a decent readme(inside archive). Please read it first. If you have any other questions, don't hesitate to ask. You can flash the bin file to your modchip/TSOP or run the xbe from your dashboard. You can reflash your modchip/TSOP from within XBlast OS if you ever want to remove it. Just make sure to have a valid bios image in C:\BIOS or make yourself a DVD-R/CD-RW with a bios file called "image.bin" in its root. Netflash (flash bios from Web browser) does not work so well right now. You have to manually add an entry to your PC's ARP cache to "fix" it. BIOS and XBE have been tested on a 1.2 and 1.6 Xbox without issue.
Just have to wait for the chip itself now. Will you have it ready to sell by the end of the year ? That would be great.
Looks great. Just booted the xbe file on my 1.4v X3 xbox. Going to flash the 256k bios tonight and test it out.
Me too when I am back home tomorrow. Benny - thanks for this release, and of course, for all the hours you are putting in on this project. Cheers, Mark
I don't want to rush things. I do have other occupations and I do this for the fun of it. When I'm not feeling like it I just leave it be; but I really like this project so it takes a lot of my free time . So it'll be ready when it'll be ready. Maybe a small batch will be made by the end of the year if all goes well. Great! Everything worked great? Xbox revision detection? X3 chip detection? Thank you for your support. The best part of it is seeing all the people interested in this project.
Yes, the OS work's fine. I flashed the bin file to the X3 and also launched it from disc with the xbe. Some very interesting features I will have to try tomorrow. Thanks for making this awesome modchip. I can't wait to buy a few off you soon.
Got a PM from turfster about some confusing on what XBlast OS bin file is. I thought it my clear up some misconceptions for others so here's the transcript:
Thanks for the very clear explanation. So right now I have your OS xbe saved in my games folder. I can boot my X3 bios from your OS or straight away as normal. I kind of figured that's what you meant. So I won't flash the bin file to my X3 and leave it as a xbe to mess with until you release your modchip for sale or testing. So i was able to test the OS more today I tried most of the function's on the chip so far. System setting's: -changed led color work's -fan speed work's -dvd regiom and game region correct LCD setting's -all work with the X3 LCD Tools: -I have a 128mb mobo here I am going to test the ram with soon. edit: Just tried it. Work's perfectly. This is so awesome. Flash menu: -net flash and web flash show a different IP and did not accept DHCP IP address. -hd method worked. I didn't try the cd method yet. HD menu: -looks fine. I didn't mess with that. CD menu: -worked. I was able to eject and close the tray Info menu: -work's Power menu -work's So the only thing I have trouble with so far is flashing with net,web or cd feature which clearly states that in the readme file included. Donation sent. Thank's again for making this.
Thanks for the support! So I assume that Xbox revision detection and modchip detection worked fine? Just to clear my conscience, anything from CD menu, Info menu and Power menu is a direct take from Gentoox Loader sources. I took this source as a base and coded around it while improving on some stuff already in place. You can go in HDD menu if you want, you can Lock/Unlock HDD, format partitions (C:, E:, Cache drives, and larger partitions F: and G. You can also display the information on your HDD like model, serial, size, lock status as well as the partition table contained in the MBR boot sector if it's present. Lock/Unlock as well as formatting partitions goes through a confirm Dialog where you have to hold LT, RT, Start and White at the same time to accept; so you cannot reformat your HDD by accident. I've played a little more on the HDD read and write functions and I was able to cut down the time required to format. For example, formatting a 170GB partition takes about 16 seconds (down from 23-24) and formatting a 960GB partition now takes around 90 seconds(down from a little less than 3 minutes!). I'm still in PIO mode 0 at about 2.5MB/s write speed, I cannot seem to switch the IDE host controller to PIO mode 4 which can theorically write at 16.6MB/s. I guess I should move to implement DMA transfer instead of putting my efforts on making PIO go faster but I have no clue on how this works!
Hi Benny I had a chance to load up the XBE release tonight. This was on a v1.2 box 128MB with X3CE and X3CP and hooked up via an HD cable. I had a good poke about the menus and here are my findings - they are very similar to Turfster's. I ran into problems straight away with the console set to NTSC. On my older Hitachi plasma, there is tearing on the lower half on the screen. I tried it on a newer Panasonic LCD and the display flashes as the XBE boots and then goes blank. If I set the console to PAL, the Xblaster menu displays fine (although the larger text looks very blocky but that might just be because of crappy PAL settings!. My chip and Xbox version were detected correctly by the way. The memory test is lovely - thank you mate for including that I didn't try flashing just yet or try the formatting options. I should have some more time next week to try everything. Oh - and I had the same problems with the DHCP address. Questions: Has the LCD Contrast adjustment been removed? Is there a chance to add the "Use saved partition table" feature that is available on the X3. This has often got me out of trouble when installing a new HDD. Apart from that, looking really nice mate so well done - really impressive work. If there is anything in particular that you want me to test then just shout. Cheers, Mark Good work on the
Hello Mark, Thanks for the feedback. I don't really know what's the situation about PAL Xboxes and HD video(on component I guess?). The reason is simple: everything I have runs on NTSC-U. I don't have any PAL monitor so I cannot really test how XBlast OS behaves on PAL monitors or PAL consoles. So anyway, to sum up, you tried XBlast OS on a NTSC console hooked up to a PAL TV using component cables and it didn't work out so well. Then you switch video region of your console to PAL, again hooked up to a PAL TV using component and you had a steady image this time. Is that it? So why do you have a NTSC console? Is it because HD modes don't work on component when console is in PAL video mode? I didn't change anything related to how to set up video output in the code. It should be exactly the same as Gentoox Loader 6.07. Could you maybe try the same manipulations but this time using Gentoox Loader 6.07? Just to see if you get the same behavior. If we work this together, I could try and change video-out logic to accomodate console hooked up to a PAL TV using component. About your questions: 1. You cannot set the contrast of the LCD via software on Xecuter 3. There is a potentiometer on the modchip itself. I hide the setting entry when I detect a modchip that cannot set contrast by software (X3 and SmartXX LT OPX). 2. When XBlast OS detects a (new) unformatted HDD on boot, it will ask if you want to format it. If you confirm, it will create the basic partitions (C:, E: and 3 cache drives) and will create a partition table on disk for those. Then a selection menu will appear if the disk is large enough to create extended partitions (F: and G. You'll get up to 4 basic configuration possibilities to format that extended space: -Split space evenly for F: and G: -Max out F1024GB - 1 sector), rest goes to G: -F: is 120GB, G: takes the rest -F: takes all, no G: Logic is coded so that an option will be shown only if it will not waste space for a drive up to 2TB(bigger than 2TB is currently not possible with hacked BIOSes). Also, I won't allow the system to create partition smaller than 500MB. If you select any one of those 4 entries, partition table will be updated accordingly. Same goes for when you format extended partitions on an already formatted HDD. If there's already a partition table on HDD, it will update entries for F: and G: drive and leave basic partition entries untouched. If no partition table is present, one will be written with default values for basic partitions and calculated values for extended partitions. Formatting C:, E: or cache drives does not touch the partition table nor will it create one. Just use XBPartitionner if you want to do funky stuff! Now that I think of it, I should add protection that forbids any partition reformat if a partition table contains unconventional entries for basic partitions.
Thanks for the detailed reply Benny - appreciate it mate. Yes - that pretty much sums it up. So - enabling NTSC on a PAL console allows you to select the higher resolutions (with an HD cable, of course). And of course, the console must be modded to allow you to select NTSC. Anyway, I was booting the XBlast XBE from within XBMC4XBOX and that was when I was experiencing those display problems. Today, I launched it from Unleash X and you will be pleased to hear that the XBlast menu displays perfectly So - the problem I had is something to do with the way my install of XBMC4BOX is opening that XBE so that is one thing to remove from your list! The contrast thing makes perfect sense - and a very neat solution to not display that option when it cannot be used. Thanks for explaining. The explanation for the formatting options is beginning to make more sense to me too now. Hopefully, I will have some spare evenings next week to have a play about with those options. Cheers, Mark
Let me start by saying I'm not sure if this is even possible -- not to mention it being a bit distracting to the conversation here... Can the chip somehow accommodate formatting for Xbox Linux? Like a "native install" for GentooX, I want to create a partition with faster performance for use with Linux. (like ext2/3/HFS or whatever the particular Linux flavor prefers) I specifically am looking to try my hand at booting XDSL from a "native" partition, but using an .xbe launcher to initialize Linux. Example scenario to illustrate my "request" -Plug in new 2TB drive. -Split partitions between F/G. -Format F as FatX. -Format G as ext2 (or whichever XDSL prefers, I forget) Then I'll prepare my F drive as normally with an Xbox. Obviously, this leaves preparing the G partition. Hopefully your FTP and/or file manager with a disk/USB can help with that stage as well. When powering the system on (using a hacked BIOS), it will act normally as an Xbox with "F-only" functionality. To run Linux, hopefully we could run a "loader" .xbe. Instead of using the partition-in-a-file "frugal" filesystem, it seeks to boot from my standard Linux partition. I recall GentooX documentation referencing GentooX Loader bios being flashed directly to the chip in order to run a different filesystem type. Hopefully somebody can advise. In a multi-bios configuration I'd like a toggle/reboot scenario for different banks. Hopefully a semi-automated launching from a hacked bios to a Linux installed in this manner can be achieved. A reboot can be called after toggle of BIOS selection, for example. Some things are hinting at this being technically feasible. I know this has to do with technical hurdles you already identified but: BIOS switching is something the X3 boasts in the OS. [Some] X3 BIOS settings are actually accessible from Avalaunch. I'm not sure if BIOS switching in X3 is supported directly in Avalaunch. In one of my previous posts here, I wanted to see multi-drive configurations that allow software-switching of physical HDDs. Not many people would have use for it because of the hardware intricacies and case modding involved. --- *edit* see bottom of post This post is basically a recycled version of that request. The bottom line request: Get FatX/.xbe support and Linux "native" support in the same xbox. Maybe my logic is flawed somewhere and this fundamentally isn't possible. In any case, hopefully somebody can more technically detail why I should stop dreaming. I have only X3 and Aladdin XT Plus chips available to me, but a possible solution might already be in my possession. Flash TSOP with one of either hacked or Linux BIOS. Flash the chip with the other. D0 now effectively becomes the "switch" between Linux and Xbox. I'm not clear on how to handle the setup the HDD to avoid issues/conflicts between a shared HDD as I describe. In any case, I'm excited to try out all the developing features as I can with my current chips. Time to grab an Xbox from the pile downstairs and prepare it for flashing. Thanks psy_chew and also to anyone else reading with an ear to what I'm looking to accomplish. --- edit I wanted to see HDD switching when I first came to make my request. Can't the chip run the HDD-power from the power supply, and run the power in turn to the currently "active" drive set by the BIOS? Both drives would have to be hooked to a conditional power source output on the chip. I am not experienced at designing circuits, but I hope my essay here can spark some creativity on the part of somebody that knows something about it.