Patch Busid 

Cách 1: Patch thủ công

Dành cho các PC không thể vào đc macOS (bị đen màn không cổng nào hoạt động).

  • Lấy Busid:

B1: Các bạn truy cập vào bài Patch iGPU để lấy code.

B2: Chọn Spoiler để lấy Busid. 

B3: Chọn phần có ID trùng với appl-id của bạn như id của mình là 0x01660003.

B4: Chú ý như sau:

B5: Ta có các dòng ở vị trí t1 sẽ tương ứng con0 và tiếp tục như vậy 

  • Tiến hành:

B1: Chỉnh về loại type mà các bạn muốn ta có như sau: 

05        03 0000 02000000 30000000

index    | busid |    type     |     flag     |

Ở đây ta sẽ chú ý đến busid, type.

B2: Chuyển type code của dòng code mà bạn lấy: 

 05030000 02000000 30000000 ⇒ 05030000 00080000 30000000

(ở đây mình chuyển về port hdmi)

B3: Thử từng busid từ 01 ⇒ 06

 05030000 00080000 30000000 ⇒  05xx0000 00080000 30000000

B4: Disable 2 port còn lại đi bằng cách thay busid của các port muốn disable thành 00 như ở đây của mình là: 

02050000 00040000 07040000 ⇒ 02000000 00040000 07040000

03040000 00040000 81000000 ⇒ 03000000 00040000 81000000

04060000 00040000 81000000 ⇒ 04000000 00040000 81000000

Sau khi đổi ta được 

framebuffer-patch-enable | Data | 01000000

framebuffer-con0-enable  | Data | 01000000

framebuffer-con1-enable  | Data | 01000000

framebuffer-con2-enable  | Data | 01000000

framebuffer-con3-enable  | Data | 01000000

framebuffer-con0-alldata | Data | 05010000 00080000 30000000

framebuffer-con1-alldata | Data | 02000000 00080000 07040000

framebuffer-con2-alldata | Data | 03000000 00080000 81000000

framebuffer-con3-alldata | Data |  04000000 00080000 81000000

B5: Add các giá trị vào mục device properties ở dưới mục patch igpu (tức là device properties ==> PciRoot(0x0)/Pci(0x2,0x0) đối với oc còn với clover các bạn add vào mục device ==> properties ==> PciRoot(0x0)/Pci(0x2,0x0))

Lưu ý: N ếu vẫn chưa thành công sau khi đổi các busid cho port 1 thì các bạn sẽ disable port 1 đi và enable port 2 sau đó đổi busid của port 2 thử từng busid 01 ⇒ 06 và cứ tiếp tục như vậy 

05010000 02000000 30000000

02020000 00040000 07040000

03030000 00040000 81000000

04040000 00040000 81000000

V.v………………………………..

Lưu ý 2: Nếu cổng HDMI của bạn dính với Card rời thì hãy Injects NVCAP ( chỉ với những dGPU được support thôi nếu gặp lỗi thì mới patch và chỉ với Card Nvidia )

Lưu ý 3: Nếu trong quá trình thử mà bạn đều bị treo táo thì hãy thử add code sau vào boot-arg “igfxonln=1” hoặc add đoạn patch sau:

force-online|data|01000000 vào dưới dòng patch HDMI của bạn 

Lưu ý 4: Đối với các bạn khi xuất màn bằng HDMI mà khi Full tab ra bị tắt màn hình thì các bạn vào setting chỉnh như hình:

Lưu ý 5: Ta có 1 mẹo nhỏ như sau ở đây mình sẽ ko sử dụng method all data nữa như đã biết ở trên ta có busid sẽ nhận từ 1-6 mà trung bình frambuffer thường sẽ có 3 connector nên nếu là theo cách thông thường ta phải thử 18 lần nhưng ở đây ta có 1 thủ thuật là trong 1 lần ta sẽ thử cả 3 con ta có là 123,234,345,456,562,611 Và các bạn cũng set type theo bảng trên nhé (hdmi=00080000).

Ta có như sau:

Cách 2: Patch với Hackintool 

Dành cho Laptop hoặc 1 số PC có thể kết nối với 1 cổng xuất màn hình. 

B1: Tải hackintool.

B2: Các bạn chọn như hình:

 

B3: Chỉnh platformid và Intel Gen (mình mặc định là các bạn đã patch iGPU trước đó | nếu bạn nào chưa patch thì xem lại mục XIII).

B4: Chuyển qua mục connect 

B5: Cắm các dây xuất màn hoạt động vào (ở đây mình chỉ có 1 cổng internal là hoạt động | thử từng dây nếu máy có 4 port xuất màn trong đó có 1 port HDMI thì các bạn cắm 3 port còn lại nếu nhận thì port ko tick đỏ chính là port HDMI)

B6: Nhấn chuột phải vào mục busid của các port ko chuyển màu và thử từ 0x01 ⇒ 0x06 sau đó chỉnh type lại (đổi từng port 1 không đổi cùng lúc nhiều port).

B7: Chuyển tới tab Patch ⇒ General ⇒ Patch ⇒ Advance và chỉnh như hình.

(mục spoof device id các bạn có thể xem ở phần patch iGPU mục XIII). 

B8: Chọn mục Generate Patch. 

B9: Chọn file ⇒ export ⇒ bootloader config.plist

B10: Mở cả 2 file là config.plist và file vừa tạo copy các mục trong Device Properties của file vừa tạo qua config sau đó Restart máy (đối với Clover thì copy như hình).

Lưu ý main source: [HƯỚNG DẪN] Hướng dẫn vá lỗi bộ đệm khung chung (Sự cố màn hình đen HDMI) | tonymacx86.com

Lưu ý 2: Khi patch bằng hackintool (nếu các bạn chỉ muốn patch hdmi thôi) thì nên disable các port chx patch và thử giống như  patch busid thủ công (như hình) 

Lưu ý 3: Đối với 1 số dòng main của pc thì đã có các patch sẵn các bạn chỉ cần add vào thôi 

  • Vào tab patch ⇒ system configs trên menu bar
  • Khi này các setting sẽ được tự động detec công việc còn lại chỉ là generate patch thôi (làm như phần trên)

XXIII.2 : Patch NVCAP 

Dành cho các dgpu hỗ trợ nhưng không xuất đc màn ngoài do injects thông tin chưa đúng

P1: Chuẩn bị 

B1: Tải gfxutil 

Sau đó vào terminal gõ lệnh path/to/gfxutil -f display sau khi gõ lệnh sẽ được như hình 

Các bạn chú ý đến dòng PciRoot(0x2)/Pci(0x0,0x0)/Pci(0x0,0x0).

Và add vào mục 

config.plist ⇒ root ⇒ device properties ⇒ add ⇒PciRoot(0x2)/Pci(0x0,0x0)/Pci(0x0,0x0) | dictionary 

B3: Tải file vbios phù hợp với cấu hình theo link sau VGA Bios Collection | TechPowerUp.

B4: Tải Node JS’s site.

P2: Xác định cấu trúc cần Patch 

Các bạn xác định theo bản sau cần chú ý đến các mục như sau: 

OpenCore:

model: Tên của card rời Nvidia. 

Vram totalsize: Set kích thước VRAM. 

Rom-revision 

NVCAP: Đây là phần quan trọng nhất giúp bạn sử dụng được HDMI.

P3: Tiến hành 

B1: Xác định model phần này bạn sẽ chọn vualt là tên Card rời. 

B2: Xác định VRAM: 

  • Chọn số vram bạn muốn set như ở đây mình muốn set là 1024 thì sẽ nhập như sau vào terminal 
  • echo ‘số ram muốn set  * 1024 * 1024′ | bc ( echo ‘1024 * 1024 * 1024′ | bc )
  • echo ‘obase=16; ibase=10; giá trị vừa có ở mục trên’ | bc 

( echo ‘obase=16; ibase=10; 1073741824’ | bc )

  • Các bạn tách thành các cặp như sau 40000000 ⇒ 40 00 00 00
  • Đảo ngược thứ tự các cập 40 00 00 00 ⇒ 00 00 00 40 
  • Thế 8 số 00 vào cuối dãy dữ liệu 

00 00 00 40 ⇒ 00 00 00 40 00 00 00 00

  • Cuối cùng kết nối các dữ liệu lại ta được 0000004000000000

B3: Patch rom-revision.

Ở phần này rom-revision có thể là bất cứ giá trị nào nhưng bắt buộc phải có vd mình sẽ lấy giá trị là king-dragon man thì nó sẽ có dạng: 

Rom-revision | string | king-dragon man 

B4: Xác định NVCAP. 

  • Các bạn nhập các dòng sau vào Terminal:

git clone https://github.com/1Revenger1/NVCAP-Calculator

cd NVCAP-Calculator

npm install

npm run run

(sau khi chạy lên sẽ được như hình)

  • Nhấn 1 và kéo VBIOS vào sau đó Enter
  • Nhấn 3 sẽ được như hình: 
  • Gắn display với heads bằng cách nhập số display trước heads sau (ví dụ 1 1 sẽ được như hình).

(Các bạn nhấn lại 1 lần nữa để huỷ bỏ liên kết vd 1 1 sẽ được như hình).

  • Tiếp các bạn đặt các giá trị NVCAP theo bảng sau: 
  • Sau khi hoàn thành các bạn nhấn phím “C” sẽ được như hình
  • Tại đây ta sẽ được giá trị NVCAP
  • như sau NVCAP: 05000000 00000300 0c000000 0000000f 00000000

Lưu ý: Mỗi heads chỉ có thể xuất ra 1 màn hình 1 lúc nên  bạn phải cẩn thận khi chọn heads VD bạn có 2 cổng HDMI muốn xuất ra 2 màn hình thì bạn phải để 2 display kết nối với 2 hex khác nhau.

B4: Sau khi làm xong các bước trên các bạn sẽ được như hình: 

B5: Add các giá trị sau vào mục Config.plist ⇒ Root ⇒ DeviceProperties ⇒ Add ⇒ dòng vừa add ở bước chuẩn bị sau khi add xong sẽ được như hình: 

Lưu ý: Main source Legacy Nvidia Patching | OpenCore Post-Install (dortania.github.io)

Lưu ý 2: Nếu các bạn dùng Cáp chuyển thì set type theo đầu cắm vào Main của máy VD HDMI to DP set type là HDMI.

Clover

Đối với Clover các bạn chỉ cần bật mục injects nvidia lên là được.

Tuy nhiên vẫn có 1 số trường hợp khi bật lên rồi nhưng vẫn gặp lỗi thì các bạn tính toán NVCAP như OpenCore sau đó bỏ vào mục NVCAP như hình:

2 thoughts on “XIII. Fix Connect (HDMI)

  1. Pingback: Tìm hiểu phần cứng - Heavietnam November 2021

  2. Pingback: Convert bootloader - Heavietnam December 2021

Leave a Reply