Fix Connector

Patch Busid

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

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í thứ 1 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:

 05  030000  02000000  30000000 ⇒ 05   030000 00080000  30000000

Ở đây ta sẽ cần chuyển về port hdmi

<02 00 00 00>        LVDS và eDP       - Màn hình máy tính xách tay
<10 00 00 00>        VGA               - Không được hỗ trợ trong 10.8 và mới hơn
<00 04 00 00>        DisplayPort       - Cổng ra màn hình USB-C sử dụng DisplayPort
<01 00 00 00>        DUMMY             - Được sử dụng khi không có cổng vật lý
<00 08 00 00>        HDMI              - Giao diện đa phương tiện độ nét cao (High-Definition Multimedia Interface)
<80 00 00 00>        S-Video           - Video phân tách (Separated Video)
<04 00 00 00>        DVI (Dual Link)   - Giao diện trực quan số (Digital Visual Interface) liên kết kép
<00 02 00 00>        DVI (Single Link) - Giao diện trực quan số liên kết đơn
Chú thích
  • LVDS và eDP: Các loại kết nối màn hình máy tính xách tay phổ biến.

  • VGA: Cổng kết nối hiển thị cũ, không được hỗ trợ trong các phiên bản macOS mới (10.8 trở lên).

  • DisplayPort: Cổng kết nối hiển thị kỹ thuật số hiện đại, thường được tích hợp trong cổng USB-C.

  • DUMMY: Giá trị được sử dụng khi không có cổng kết nối vật lý nào được kết nối.

  • HDMI: Cổng kết nối phổ biến cho TV và màn hình hiện đại, hỗ trợ cả âm thanh và video.

  • S-Video: Cổng kết nối video cũ, chất lượng thấp hơn so với các cổng hiện đại.

  • DVI (Dual Link và Single Link): Cổng kết nối hiển thị kỹ thuật số, hỗ trợ độ phân giải cao. Liên kết kép (Dual Link) hỗ trợ độ phân giải cao hơn liên kết đơn (Single Link).

B3: Thử các busid từ 01 ⇒ 06

Chú ý rằng 1 số busid sẽ không khả dụng với các loại connector type nhất định

Xem bảng sau

  • HDMI

    • 0x1

    • 0x2

    • 0x4

    • 0x5

    • 0x6

  • DP/Vga

    • 0x2

    • 0x4

    • 0x5

    • 0x6

  • DIVI

    • 0x1

    • 0x2

    • 0x4

    • 0x6

Chú ý rằng không được phép sử dụng 2 busid giống nhau trên 2 con khác nhau trong cùng 1 thời điểm.

Tức là các bạn có thể thử busid ở cả 3 con cùng lúc mình có để mẹo ở lưu ý bên dưới

 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 ⇒ 02**00**0000 00040000 07040000

03040000 00040000 81000000 ⇒ 03**00**0000 00040000 81000000

04060000 00040000 81000000 ⇒ 04**00**0000 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 | 05**01**0000 00080000 30000000

framebuffer-con1-alldata | Data | 02**00**0000 00080000 07040000

framebuffer-con2-alldata | Data | 03**00**0000 00080000 81000000

framebuffer-con3-alldata | Data | 04**00**0000 00080000 81000000

B5: Add các giá trị vào mục device properties ở dưới device properties ==> PciRoot(0x0)/Pci(0x2,0x0)

Đối với Clover

Thì đường dẫn sẽ là 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

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

Lưu ý 2:

Nếu cổng HDMI của bạn dính với Card rời mà không sử dụng được 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

Các xác định hdmi nằm ở đâu

Ta sẽ tiến hành vào device properties --> monitor --> properties --> location

Lưu ý:

Nếu trong quá trình thử mà bạn đều bị treo táo thì hãy thử add arg sau vào boot-arg igfxonln=1igfxonlnfbs=MASK

Hoặc add patch sau vào device properties

force-online|data|01000000

force-online-framebuffers |data|00000000 00000003

Dưới pci-path của IGPU

Lưu ý :

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

Mẹo đáng nhớ

Ở đâ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ừ 0x1-0x6

Mà trung bình frambuffer thường sẽ có 3 connector

Nên nếu làm 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

Tức là các busid sẽ như sau 123,234,345,456,562,611 Và các bạn cũng set type theo bảng trên nhé

Chú ý:

123,234,345,456,562,611

Tức là busid từ con 1 tới con 3 theo thứ tự từ trái qua phải

Linh động thay đổi theo số lượng con của bạn

Và cuối cùng ta được như sau

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 đó

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

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 ý : 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

Hoặc nếu bạn nào muốn dùng nhanh thì có thể dùng mẹo mà mình đã hướng dẫn ở trên

Lưu ý:

Đố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

Enable lspcon driver support

Gần đây các nhà sản xuất đã trang bị cổng hdmi 2.0 cho các thiết bị KBL hoặc CFL+

Nhưng chip intel UHD không hỗ trợ cổng chuyển hdmi 2.0

Do đó các nhà sản xuất đã thêm một phần cứng được đặt tên là LSPCON ở trên mainboard để chuyển DP thành HDMI 2.0

Tiếp đó ta cần biết LSPCON có 2 chế độ chuyển đổi

  • LS

    • Dp to hdmi 1.4

  • PCON

    • Dp to hdmi 2.0

Theo mặc định firmware thì LSPCON sẽ luôn chạy ở chế độ LS

Do đó nó sẽ dẫn đến lỗi màn hình đen khi các bạn xuất màn qua hdmi 2.0

Vậy những thiết bị nào cần patch LSPCON.

Như đã nói ở trên các thiết bị có hdmi 2.0 chạy trên uhd thì sẽ cần patch hdmi 2.0 thường sẽ là các dòng SKL, KBL, CFL+

B1: Add enable-lspcon-support|Data|01000000 vàoigpu properties

Hoặc add arg -igfxlspcon

B2: Add framebuffer-conX-has-lspcon|Data|01000000 thay thế X với con hdmi của các bạn

  • thử từng con 1 hoặc thử cùng lúc 3 con

  • Một tuỳ chọn thêm dành cho các bạn framebuffer-conX-preferred-lspcon-mode

    • Để có thể tuỳ chỉnh đầu ra hdmi của các bạn với type là DATA và các giá trị

      • 01000000

        • PCON, DP to HDMI 2.0

      • 00000000

        • LS, DP to HDMI 1.4

    • Mọi giá trị khác đều được coi là chế độ PCON

    • Khi không add properties này thì chế độ PCON sẽ là chế độ được ưu tiên

Patch NVCAP General

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

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).

B3: Add dòng sau vào

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

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

B5: Tải Node JS’s site.

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:

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

// Ví dụ
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ó

Ví dụ 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
  • 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

    • 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

Ví dụ:

Bạn có 2 cổng HDMI muốn xuất ra 2 màn hình

Lúc này 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ư sau:

PciRoot(0x2)/Pci(0x0,0x0)/Pci(0x0,0x0)

model          | String | GeForce GT 220
device_type    | String | NVDA,Parent
VRAM,totalsize |  Data  | 0000004000000000
rom-revision   | String | Dortania
NVCAP          |  Data  | 05000000 00000300 0c000000 0000000f 00000000
@0,compatible  | String | NVDA,NVMac
@0,device_type | String | display
@0,name        | String | NVDA,Display-A
@1,compatible  | String | NVDA,NVMac
@1,device_type | String | display
@1,name        | String | NVDA,Display-B

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ị

Lưu ý:

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-NVCAP

Đố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

Giống như OpenCore sau đó bỏ vào mục NVCAP

Last updated