2014-01-16 25 views
3

我想以編程變化的MagSafe 2. LED存在一個處理感測管腳的信號的電路板和信號實際上是已知的。問題實際上是通過OS X發送這些信號。控制上的MagSafe 2 LED(發送任意數據,以感測銷)

關於MagSafe黑客入侵的唯一文檔是能夠找到的是Ken Shirriff的這篇博文 http://www.righto.com/2013/06/teardown-and-exploration-of-magsafe.html。肯發現有趣

的信號是(只是爲了完整起見),如下所示:

void writeDS2413(int n) { 
    uint8_t buf[3]; 
    net.reset(); 
    net.skip(); 
    buf[0] = 0x5a; // PIO access write 
    buf[1] = 0xfc | (n&3); // data in lower two bits 
    buf[2] = ~buf[1]; // inverted 
    net.write_bytes(buf, 3, true /* power on */); 
} 

// ... 
writeDS2413(3); // off 
writeDS2413(1); // orange 
writeDS2413(2); //green 
writeDS2413(0); //yellow 

是否有允許與的MagSafe低電平通信的OS X層?我認爲它插入時會註冊爲某種設備 - 可能是可寫的,對嗎?

+0

嗯,我猜它是從內核空間訪問..可以直接映射到內存中的某個地方,或者在I2C(OR SM)總線..訪問如果你能找到一個內核模塊控制它,你可以開始追蹤程序集以找出它寫入的地方。 – problemPotato

回答

0

在我看來,你將不得不連接到你的Mac的SMC芯片,因爲它處理所有與電池有關的事情......看看https://github.com/gcsgithub/smc_util,這將幫助你閱讀SMC鍵列表(記住要運行它與sudo)。 一旦你找到了鑰匙(如果你這樣做),使用https://github.com/fmorrow/smcwrapper將幫助你更容易地設置LED狀態。

更新:我對這個想法是,它是由SMC固件內部控制。充電=橙色,全=綠色,就是這樣。但是,這就是我以前的想法我找到了一種方法來控制你的MacBook坐在前面的LED,所以....永遠不要太相信(尤其是蘋果),不要放棄;-)

+0

有趣。謝謝,會檢查出來! –

0

如果這是Linux的某些特性,而不是OS X,那麼你只需要通過/sys/bus/w1/devices就可以訪問所有1-Wire器件 - 只需要搜索「1-Wire Raspberry Pi Tutorial」,你會發現一堆像Raspberry Pi 1- Wire Digital Thermometer Sensor這樣的東西解釋瞭如何在Linux上與1-Wire器件接口。

然而,您將面臨的下一個問題是,有Mac OS X上沒有/sys/bus - 看到這樣的問題:
Where is /sys/bus/usb/devices on Mac OS X?相關的不幸事實
「OS X不使用sysfs的更多細節「

但是,如果您在Mac OS X上訪問與訪問/sys/bus相關的類似問題或者可能訪問1-Wire總線(有時拼寫爲1Wire),可能會讓您朝着正確的方向前進。

概念上,它應該是很簡單的控制1-Wire雙通道 尋址開關是in the MagSafe power connector你所說的 - 我們只需要找到一種方式來獲得進入1-Wire總線。我建議在嘗試破解內核存儲器或與SMC控制器接口前提出這個問題,如@Perceval FARAMAZ的答案中所述。

,如果你做任何更多的進展,請張貼的答案的問題或意見,一些更新。