Skip to content

Instantly share code, notes, and snippets.

@jhong3842
Forked from eiselekd/enableDCI.txt
Created January 15, 2019 07:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jhong3842/28f7c2bbb6e68cd0bb7fc7ba975ae9d4 to your computer and use it in GitHub Desktop.
Save jhong3842/28f7c2bbb6e68cd0bb7fc7ba975ae9d4 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment