Skip to content

Instantly share code, notes, and snippets.

@eiselekd
Last active February 20, 2024 15:43
  • Star 20 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save eiselekd/d235b52a1615c79d3c6b3912731ab9b2 to your computer and use it in GitHub Desktop.
Enable DCI debugging on Gigabyte-BKi5HA-7200
Enable DCI debugging on Gigabyte-BKi5HA-7200
--------------------------------------------
The Gigabyte-BKi5HA-7200 (Kabylake i5-7200 processor) can be debugged with only a USB debug cable, a
special cable that crosses only the data signals and has the power signals
removed. You can buy these cables at i.e. https://www.datapro.net/products/usb-3-0-super-speed-a-a-debugging-cable.html
The hurdle you have to overcome before you can access DCI however is that you
need to set some bits in hardware that first enable DCI and also enable the debug port so that DCI can control the cores.
There are lots of guides in howto patch the BIOS but only these two really describes all the steps using only freely accessible tools:
* https://www.win-raid.com/t3250f16-ASUS-Prime-x-Deluxe-and-DCI-debug.html#msg46736
* http://voltground.com/haven/threads/109/
Basically it boils down to these steps:
* Download the firmware image.bin from Gigabyte, try to download a olderest version you can get.
In my case I managed to get version F4 from (http://download.gigabyte.cn/FileList/BIOS/brix_bios_gb-bki5ha-7200_f4.zip)
* Program the board with it, eather using the UEFI shell or using an external programmer
* Open image.bin with UEFITools (https://github.com/LongSoft/UEFITool) and use the "Find" menue to search for
UUID 899407D7-99FE-43D8-9A21-79EC328CAC21 : which is the "Setup" uefi variable (variable that is a block of partitioned data)
Extract this whole section to i.e. file section.bin
* Now use IFRExtractor (https://github.com/LongSoft/Universal-IFR-Extractor/releases) and get a textual description of
the section.
* The next step is to extract the offsets to the variables in question. Search for
"Debug Interface", "Debug Interface Lock","Direct Connect Interface" and "DCI enable (HDCIEN) "
* An example of the F4 version of the bki5ha-7200 bios is:
Debug Interface : 0x5D8 :
Debug Interface Lock : 0x5D9
Direct Connect Interface : 0x5DA
DCI enable (HDCIEN) : 0x8D6
* There might also be a section around these variables thjat you need to take into account:
If there is i.e.: "Suppress If {0A 82}" , then you also have to memorize that address,
it needs to be set so that the Debug variables are initialized: 0xa82 leads to VarStore and the definition
of it shows "enabed if 1", therefore it later has to be set to "0"
* Now that you have everything you need to create a usb stick Fat32. Copy ru.efi from
https://github.com/JamesAmiTw/ru-uefi/ to the stick
* Boot into the UEFI shell (F12 and UEFI shell select)
* Navigate to the usb stick (i.e. "fs2:" then cd ...) and start Ru.efi
* Inside Ru.eft you need to search for the UEFI variable (or lets say variable-block)
called "Setup", Ru.efi is a bit hard to navigate but basically you use "pgdown" "pgup"
to navigate the UEFI variables, then you use "ctrl-pgdown" "ctrl-pgup" to naviagate inside
the variable's data, the "Setup" variable is a few kilobytes big.
* Use the offsets that you collected and set at the offsets you retrieved earlier:
Debug Interface : 0x5D8 : set to 1
Debug Interface Lock : 0x5D9 : set to 0
Direct Connect Interface : 0x5DA : set to 1
DCI enable (HDCIEN) : 0x8D6 : set to 1
Also set VarStore : 0A82 to 0
* Each time you change a value press "ctrl-w" to save.
* Exit Ru.efi and enter again and verify that the changes are presistent.
* Reboot and connect the target device to a seperate windows host.
* On the host start the configConsole of the c:/Intel/Dal_xxx/ System Studio installation.
* Select TopoConfig.KBL_KBP_OpenDCI_DbC_Only_ReferenceSettings (not TopoConfig.KBL_SPT_OpenDCI_DbC_Only_ReferenceSettings)
and conect to the masterframe
* Start the pythonConsole in the same directory
* Use itp.halt() to break the cpus.
* use itp.devicelist to view the devices under test
@jfktrey
Copy link

jfktrey commented Nov 14, 2018

Also set VarStore : 0A82 to 0

This is incorrect. The 0A 82 you see appears to only be the encoding of the "Suppress If" instruction. See http://wiki.phoenix.com/wiki/index.php/EFI_IFR_SUPPRESS_IF

@jhong3842
Copy link

jhong3842 commented Jan 15, 2019

I have a question
please anyone reply

i have been followed bios dci enable step, but i don't know next step how to connect target

for example, what is the c:\Intel\Dal_xxx
But i have been installed intel 2019 system studio, i can't found that

Could you explain next procedure detailed?

I solved thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment