[WIP - Early Release] jYABE - Yet Another BIOS Editor (still not finished) - Overclock.net - An Overclocking Community

Forum Jump: 

[WIP - Early Release] jYABE - Yet Another BIOS Editor (still not finished)

Reply
 
Thread Tools
post #1 of 12 (permalink) Old 09-01-2017, 08:42 AM - Thread Starter
AMD BIOS Alchemist
 
Vento041's Avatar
 
Join Date: Feb 2016
Location: Italy
Posts: 390
Rep: 50 (Unique: 31)
##########!READ THIS FIRST!##########! READ THIS FIRST!!!!! (Click to show)
This project started 2 weeks ago like a programming exercise, now is a basic editor that allows you to modify any ATOM like bios. The core is working and I'd like to share this program with you and have a feedback on what I'm doing. Maybe all this stuff was already did by someone else, I do not know, I just like programming.

Keep in mind that I'm still working on this project, everything is not completely tested and it was "build to early fail" so I can diagnose problems easily. Continue to use your usual bios editor... This thread is only for brave people that like to help the development of this project, not for someone who has just discovered bios editing.

... Also 90% of the tables are not supported (actually they are "tehcnically" supported but first I've to write them in a format comprehensible to jYABE).
##########!READ THIS FIRST!##########!

This project aim to: (Click to show)
  • Run "out of the box" on Windows, Linux, Mac, ... anything (That's why you need Java 8 to run it)
  • Be compatible with past and modern bios (if possible)
  • Be easy to update to support new bios, without changing code but only by writing json files
  • Manage automatically offsets/size changes (table, ROM image, UEFI image, PCIR header, ...)
  • Export/Import elements of the bios (tables/subtables/...). For now only Export works.
  • Hex (Read Only) View of selected elements (pure UI stuff will do this at the end)
  • Show data in a human readable way.

Preview Image:


But the road to reach all of that is quite long: (Click to show)
  • To achieve past/modern/future bios compatibility I'm translating (almost) every structure in the official Linux driver to a peculiar JSON file (you can see some examples inside the "json/" folder in my program home)
    • That JSON format should also allow to easily upgrade this program to support a new bios/table revision, since it will just need a new json file with the definition on how the new table is structured.
    • "Translating" structures is hard, not only because is a tedious long work very prone to errors, but also because Linux drivers is not well documented enough (IMO) and sometimes I just stumble upon errors, or things that behave differently from what the comments said. Most of the IFNDEF/IFDEF flag are not well commented!!!!
    • "Translating" structures is hard #2, because I admit that the format used is a bit too prolix and not close at all to a pure C structure (tr;dl: tons of character to write)
  • Import/Creation/Deletion of elements is on hold until I finish to translate all the tables inside the Linux driver. The code "is there", the program is already ready to handle tables resize, offsets changes and so on... but it's still not perfect (so there is no reason to preview a broken feature).
  • Command tables, since they are code ad not data, will just display some minor data (structure common to all the command tables). Maybe in future I'll go more specific
  • UEFI image and PCIR structure, will need a "special treatment" but it shouldn't be to hard, I just need to find a good description on how these things are structured.
  • Most of the errors will lead to a big error log appear to the command line (where tons of this are still logged, UI error messages will come)
Right now I've only made support for these tables (but you could help): (Click to show)
  • All command tables (but in a dumbed down version)
  • OemInfo (less that 10 variables woooo!)
  • The rom image header + master data/command tables (needed to make all works)
  • VoltageObjectInfo fromat revision 3 (what you find on Polaris and some other GPUs) and 2 (untested)
  • Maybe all the possible FirmwareInfo tables (I'm not sure)
  • Partially VRAM_INFO_2_2 (polaris vram info), I've still problems understanting how some subtables are structured
  • The polaris power play table (POWERPLAY_INFO_V7)

Later I'll release a guide on how to write a json file from a C structure in the Linux driver, and make it readable for my program. For now you could read the ones that already exist and take them as (incomplete) example.

Why releasing this in such an incomplete state? (Click to show)
Because:
  • I've a Master degree to follow and exams to pass, so I've little time to write it and ship it in a short time.
  • I'm writing this thing as much modular as possible (my professor of Software Design Patterns will be proud) and I need feedback to early change design flaws
  • Why not?
  • It's free anyway... but donations are welcome
  • One day I'd like to work at AMD and saying "I made this as hobby" will be fun
  • My test are based on the bios that i found on TechPowerUp VGA BIOS Collection and only my RX 480 Nitro+ OC for realtesting
Change-logs: (Click to show)
  • 0.01 - First release
  • 0.01.1 - Partially rewrote "Groups" code. VRAM_Info_V2_2 table support added (simple creation of json files)
  • 0.01.2
    • Improved again "Groups" code
    • Added VoltageObjectInfo_V2 support (untested)
    • Changed some other tables (minor stuff, units and so on)
    • Changed json folder layout (btw is completely free, my program just scan fore each "*.json" file inside each sub-directory of the main dir "./json/")
    • Allowed bios sizes: 64, 128, 256, 512 KB.
  • 0.01.3 - Never released to public, multiple undocumented changes (coding late night)
  • 0.01.4
    • Rewrote how most group/table/pointer logic
    • Json files easier to write, a bit more prolix tho
    • Groups now show index of each element, do not need a json file anymore and are used only for repeatable tables
    • Multiple bug fix
    • Faster & cleaner code
    • Getting code ready to write more big functions (like import table)
    • Polaris power play table support! :3 Still in testing
    • A bit of error messages are now shown while loading bios (and since most tables are not supported or "naturally" malformed by the real bios creator errors are will 100% happen even with untouched legit bios).
  • 0.01.5 - Small release, forgot to add PolarisFanTable + now you can specify dividing factors to better show values in tables


Download: jYABE0.01.5-byVento.zip 163k .zip file

How to run it:
You need java installed and type "java -jar jYABE.jar" in a command line
If you add the "-A" parameter the tables will be sorted alphabetically and not by starting offset.

F.A.Q: Why the CRC is still not automatically adjusted/fixed/recomputed? (Click to show)
Quote:
Originally Posted by Vento041 View Post

...
CRC is one of the last thing that'll do since for now is basically a "you must be this tall to ride" (aka: ppl have to know how to fix checksum o bypass it by them-self, so I avoid ppl who use my program without enough knowledge).
...

tl:dr: IF you want to flash bios edited with this program you must tell AtiFlash to force the flash or you use another program to just fix it (Other bios editors for your card, OhGodACsumFixer, etc...)

Zephyr R.B.R.T. (Red BIOS Rebellion Team)
(*) ATOMTableResize (*) R_Timings - Encode/Decode RX/R9 Memory Straps
(*) Sapphire RX 480 Nitro+ OC - Better Custom BIOS (*) SimpleBiosDiff
(*) Extremely short guide on EDC errors (*) jYABE - Yet Another Bios Editor (early stage of development)
Bought a XFX RX 590 Fatboy! Looking for IR 35217 datasheet! Selling my Hybrid RX 480 Nitro+ OC 8GB.


Vento041 is offline  
Sponsored Links
Advertisement
 
post #2 of 12 (permalink) Old 09-03-2017, 08:18 AM
New to Overclock.net
 
Join Date: Jul 2007
Location: Portugal
Posts: 88
Rep: 7 (Unique: 4)
Hi

Just saw your project.

Testing it with an Radeon HD4850, bios is not loading:

java.lang.Exception: Invalid bios size!
at loader.Loader.loadBios(Unknown Source)
at loader.Loader.main(Unknown Source)

Thanks.

ATOM BIOS Reader file

XFX4850_Orginalbios.rom.txt 6k .txt file

BIOS

XFX4850_Orginalbios.zip 39k .zip file

skull.gif [Official]AMD RX 480/ 470/ 460 Owners Club skull.gif
aGeoM is offline  
post #3 of 12 (permalink) Old 09-03-2017, 09:45 AM - Thread Starter
AMD BIOS Alchemist
 
Vento041's Avatar
 
Join Date: Feb 2016
Location: Italy
Posts: 390
Rep: 50 (Unique: 31)
aGeoM Sorry didn't know such small bios could exist. Btw your card is quite old so probably my program will not display anything (It will eventually work with it but right now, I'm first analyzing tables that I can test). New version incoming.... wait 1 min xD

Btw, the program load completely the bios to memory and close the IO asap, and lose any reference to the origin file, so there is no problem to mess with this program since every mod is done in the pc memory and not saved on file. Also I've only wrote the "Save As ..." not the "Save", so there is no way someone will overwrite is original bios by mistake (ok maybe if you select your own original file it will work but you must be blind to select your only copy of your original bios).



I saw that your bios load the FirmwareInfo_1_4 table and the multimedia info (the only two that I've already translated compatible for your bios), if you know how could you check if everything is ok? (variables have the value that they are supposed to have) If not no problem I'll do it manually when I've time xD (not so much xD)

Zephyr R.B.R.T. (Red BIOS Rebellion Team)
(*) ATOMTableResize (*) R_Timings - Encode/Decode RX/R9 Memory Straps
(*) Sapphire RX 480 Nitro+ OC - Better Custom BIOS (*) SimpleBiosDiff
(*) Extremely short guide on EDC errors (*) jYABE - Yet Another Bios Editor (early stage of development)
Bought a XFX RX 590 Fatboy! Looking for IR 35217 datasheet! Selling my Hybrid RX 480 Nitro+ OC 8GB.


Vento041 is offline  
Sponsored Links
Advertisement
 
post #4 of 12 (permalink) Old 09-03-2017, 02:00 PM
New to Overclock.net
 
Join Date: Jul 2007
Location: Portugal
Posts: 88
Rep: 7 (Unique: 4)
Thanks for the update.

I was "messing" around with that old graphics card bios, I can't overclock it on windows 10 with software so I bios modded with RaBiT, only then I saw this thread and decided to test and some how to help you on this..
ATM have no access to the card, I'm on my main PC on my main house smile.gif but I loaded the bios and I saw the variable values so a soon as I can I will change some of them and flash modded bios to report you back.

Meanwhile I will test the program with RX560/580 BIOSes.

C ya

skull.gif [Official]AMD RX 480/ 470/ 460 Owners Club skull.gif
aGeoM is offline  
post #5 of 12 (permalink) Old 09-04-2017, 04:10 AM
RadeonMOD Author
 
Ne01 OnnA's Avatar
 
Join Date: Jul 2016
Location: HolyWater Village
Posts: 577
Rep: 19 (Unique: 13)
Fiji BIOS not working also rolleyes.gif

Please make run shortcut for easy use wink.gif

Fat Ne01 ZEN RiG
(24 items)
CPU
ryZEN 1700 k17
Motherboard
ASUS ROG Crosshair VI Hero X370
GPU
Radeon Vega 64 XTX LiquiD Limited Edition 1800/1200 1.137v
RAM
HyperX Predator 4x8GB DDR4-4133 CL19-21-21-41
Hard Drive
Samsung 850 Evo
Hard Drive
Samsung 850 Pro
Hard Drive
Seagate New Baracuda 128MB
Hard Drive
Samsung 960Pro M.2 PCIe
Optical Drive
LiteOn DVD Burner
Power Supply
Seasonic/XFX 780tW Black Ed. Platinum
Cooling
Cooler Master AiO WC Nepton 280L with Cold-Water MOD + Side Fan (Copper Solid™ Base & Radiator with HRSI™ )
Case
BIG Tower Corsair 750D SilentO MoD, Brushed Aluminium, 5 fans/dust free
Operating System
Win_X PRO x64 Custom Build
Monitor
iiyama ProLite XUB2792QSU-B1 1440p 74Hz 10Bit with FreeSync™
Keyboard
Razer DeathStalker LED, 1000Hz Ultra Pooling 0.01ms Pro Gamer ED
Mouse
ROCCAT Nyth Modular MMO 1000Hz Ultra Pooling 0.01ms 12000 CPI XtreME Gamer ED
Mousepad
ROCCAT Taito – Shiny Black Medium w/Silver Nano Fibre Matrix surface
Audio
Audio-Technica ATH-AD1000X w/ATMOs™
Audio
SB-Zx Gamer ED, PCIe Gold Plated with Nichicon “Fine Gold” Japan-Plati Capacitors Mod (Hardware DTS™ & DolbyDigital™ )
Audio
Custom PyramiD™ 5.1 Woofer & Amplituner >300W + SB-Zx
Audio
Magnat Vector 2 - POW: 80W / 120W
Audio
Magnat Monitor Supreme 102 - POW: 60W / 120W
Audio
Jamo Pj 6000b - POW: 70W / 100W
Audio
Cables: Ultra Hi EFI PlaTinuum (B&R Pure Copper CU w/Silver 3.5mm)
▲ hide details ▲
Ne01 OnnA is offline  
post #6 of 12 (permalink) Old 09-04-2017, 05:14 AM - Thread Starter
AMD BIOS Alchemist
 
Vento041's Avatar
 
Join Date: Feb 2016
Location: Italy
Posts: 390
Rep: 50 (Unique: 31)
@Ne01 OnnA tons of bios does not work ,right now xD since 95% table "transaltions" are still not done xD mind at least sharing your bios and cmd line output? With "run shortcut" you mean a just bat with "java -jar jYABE.jar" inside it?

Zephyr R.B.R.T. (Red BIOS Rebellion Team)
(*) ATOMTableResize (*) R_Timings - Encode/Decode RX/R9 Memory Straps
(*) Sapphire RX 480 Nitro+ OC - Better Custom BIOS (*) SimpleBiosDiff
(*) Extremely short guide on EDC errors (*) jYABE - Yet Another Bios Editor (early stage of development)
Bought a XFX RX 590 Fatboy! Looking for IR 35217 datasheet! Selling my Hybrid RX 480 Nitro+ OC 8GB.


Vento041 is offline  
post #7 of 12 (permalink) Old 09-04-2017, 07:38 AM
New to Overclock.net
 
Join Date: Jul 2007
Location: Portugal
Posts: 88
Rep: 7 (Unique: 4)
Did some quick testing on HD4850:

Original BIOS




Modded BIOS, changed DefaultMemoryClock from 1050 to 1100MHz



Notes:

- BIOS Checksum not fixed
- Lost of Voltage reading, and others RED rectangles signalled on the Screen Shot.

More testing to be done in next days.

EDIT: OpenCL card not recognised.

skull.gif [Official]AMD RX 480/ 470/ 460 Owners Club skull.gif
aGeoM is offline  
post #8 of 12 (permalink) Old 09-04-2017, 08:11 AM - Thread Starter
AMD BIOS Alchemist
 
Vento041's Avatar
 
Join Date: Feb 2016
Location: Italy
Posts: 390
Rep: 50 (Unique: 31)
@aGeoM the wrong voltage reading are "good", because you should not supposed to change core clock with the firmwareinfo table but rather with the powerplay table ("json" will come when I'll finish exams). firmwareinfo is used (i think) with other table to calculate default voltage values, so probably that's why things are messed up.

CRC is one of the last thing that'll do since for now is basically a "you must be this tall to ride" (aka: ppl have to know how to fix checksum o bypass it by them-self, so I avoid ppl who use my program without enough knowledge).

The whole OpenCL, PCI x1.1 thing is weird, never seen before I'll look into it.

Zephyr R.B.R.T. (Red BIOS Rebellion Team)
(*) ATOMTableResize (*) R_Timings - Encode/Decode RX/R9 Memory Straps
(*) Sapphire RX 480 Nitro+ OC - Better Custom BIOS (*) SimpleBiosDiff
(*) Extremely short guide on EDC errors (*) jYABE - Yet Another Bios Editor (early stage of development)
Bought a XFX RX 590 Fatboy! Looking for IR 35217 datasheet! Selling my Hybrid RX 480 Nitro+ OC 8GB.


Vento041 is offline  
post #9 of 12 (permalink) Old 09-04-2017, 08:34 AM
New to Overclock.net
 
Join Date: Jul 2007
Location: Portugal
Posts: 88
Rep: 7 (Unique: 4)
I flashed modded BIOS and fixed CRC, no problem smile.gif


EDIT All the best for your exams.

skull.gif [Official]AMD RX 480/ 470/ 460 Owners Club skull.gif
aGeoM is offline  
post #10 of 12 (permalink) Old 09-29-2017, 03:55 PM - Thread Starter
AMD BIOS Alchemist
 
Vento041's Avatar
 
Join Date: Feb 2016
Location: Italy
Posts: 390
Rep: 50 (Unique: 31)
Released 0.01.4, mostly focused on improving code and Polaris power play support, if someone want to try it on his Polaris bios and give feedback will be really helpful biggrin.gif

Zephyr R.B.R.T. (Red BIOS Rebellion Team)
(*) ATOMTableResize (*) R_Timings - Encode/Decode RX/R9 Memory Straps
(*) Sapphire RX 480 Nitro+ OC - Better Custom BIOS (*) SimpleBiosDiff
(*) Extremely short guide on EDC errors (*) jYABE - Yet Another Bios Editor (early stage of development)
Bought a XFX RX 590 Fatboy! Looking for IR 35217 datasheet! Selling my Hybrid RX 480 Nitro+ OC 8GB.


Vento041 is offline  
Reply

Quick Reply
Message:
Options

Register Now

In order to be able to post messages on the Overclock.net - An Overclocking Community forums, you must first register.
Please enter your desired user name, your email address and other required details in the form below.
User Name:
If you do not want to register, fill this field only and the name will be used as user name for your post.
Password
Please enter a password for your user account. Note that passwords are case-sensitive.
Password:
Confirm Password:
Email Address
Please enter a valid email address for yourself.
Email Address:

Log-in



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 


Forum Jump: 

Posting Rules  
You may post new threads
You may post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off