2 puan yazan GN⁺ 2024-09-18 | 1 yorum | WhatsApp'ta paylaş
  • USB üzerinden algılanmayan Elgato Game Capture HD60 S, güç hattını aşağı çeken 3 güç entegresi değiştirildikten sonra HDMI yakalama ve passthrough işlevlerini normal şekilde geri kazandı
  • Termal görüntüleme, voltaj ölçümü ve SMD işaret aramasıyla 2 adet Fitipower FP6373A regülatör ve bir TI TPS60403DBV voltaj invertörü tespit edildi; parça maliyeti LCSC’ye göre 1 doların altındaydı
  • Yakalama işlevi geri gelmişti, ancak 7 beyaz ve 7 kırmızı durum LED’i kapalıydı; LED sürücüsü ve LED dizisinin kendisinin Raspberry Pi Pico ile doğrudan kontrolde sağlam olduğu doğrulandı
  • Ghidra ile Nuvoton M031LD2AE firmware’i ve Cypress/Infineon CYUSB3014 için SPI flash izlendiğinde, 0x300000’den başlaması gereken LED animasyon verisinin boş veya bozuk olduğu görüldü
  • Sağlam bir HD60 S’in yalnızca LED veri bölgesi sorunlu cihazın SPI flash’ına birleştirilerek yazıldığında durum LED’leri geri geldi; kalan arızanın donanım değil yazılım, programlama veya güncelleme yoluyla ilgili bir sorun olduğu anlaşıldı

USB tarafından algılanmayan HD60 S’in güç katının onarımı

  • eBay’den satın alınan arızalı Elgato Game Capture HD60 S USB 3.0, bağlandığında bilgisayarda hiçbir şey olarak görünmüyordu
  • Kart açılıp voltajlar ölçüldüğünde güç hattının düşük seviyeye çekildiği görüldü ve termal kamera ile ısınan çip bulundu
  • Sorunlu parçalar, üzerinde yalnızca küçük işaretler bulunan güç entegreleriydi
    • fiVJVE işaretli 2 çip, 2.2µH indüktörlerin yakınında olduğundan anahtarlamalı regülatör olarak tahmin edildi
    • SMD işaret araması ve Fitipower belgelerinin kontrolü sonucunda FP6373A olduğu sonucuna yaklaşıldı
    • PFNI işaretli çipin Google aramasıyla TI TPS60403DBV voltaj invertörü olduğu doğrulandı
  • Üç çipin tamamı 5V giriş alıyordu ve çıkış tarafı direnci düşüktü; bir FP6373A’nın çıkış hattına doğrudan 2.7V verildiğinde ilgili regülatör ısınıyordu
  • FP6373A, LCSC’de adet başına $0.17, TI çipi ise $0.58 karşılığında satın alınabiliyordu ve kargo ücreti parça bedelinden çok daha yüksekti

Parça değişiminden sonra kalan durum LED’i sorunu

  • Üç güç entegresi değiştirildikten sonra HD60 S bir USB cihazı olarak algılandı; HDMI yakalama ve passthrough normal çalıştı
  • Ancak cihazın durum göstergesi hâlâ yanmıyordu
    • 7 beyaz LED ve 7 kırmızı LED bulunuyordu
    • Beyaz LED’lerin bağlantıdan hemen sonra iki kez yanıp sönmesi gerekiyordu
  • LED ile ilgili çip Innochip’in IT1504 modeliydi ve veri sayfasına göre 16 kanallı bir LED sürücüsüydü
  • Osiloskopla IT1504 giriş pinlerine bakıldığında SPI’a benzeyen seri trafik geldiği görüldü
  • PCB izleri takip edildiğinde IT1504’ün Nuvoton M031LD2AE ARM Cortex-M0 mikrodenetleyici tarafından kontrol edildiği anlaşıldı

IT1504 muadili arayışı ve devre doğrulaması

  • IT1504’ü genel dağıtım kanallarında bulmak zordu; Innochip’in stokları yalnızca tam makara seviyesindeydi ve numune gönderemiyordu
  • Muadil ararken Macroblock’un MBI5040 modeli bulundu
    • MBI5040 veri sayfası, yapı ve blok diyagram açısından IT1504 veri sayfasıyla neredeyse aynıydı
    • Çıkış akımı özellikleri biraz farklıydı, ancak işlevler ve komut sistemi çok benzerdi
    • MBI5040 veri sayfasındaki komut bilgileri, LED kontrol yöntemini anlamaya yardımcı oldu
  • MBI5040GF satın alınıp IT1504 yerine takıldı, ancak LED’ler yine de yanmadı
  • Tezgâh tipi güç kaynağı ve dirençle LED’ler tek tek yakıldığında LED’lerin kendisinin sağlam olduğu görüldü
  • Raspberry Pi Pico doğrudan MBI5040 girişine bağlanıp komut gönderildiğinde LED’ler tamamen kontrol edilebildi
    • LED sürücü devresinde ve LED dizisinde fiziksel bir sorun olmadığı sonucuna varıldı
    • Orijinal IT1504 tekrar takıldığında da Pico kontrolü normal çalıştı; mevcut LED sürücüsünün de arızalı olmadığı anlaşıldı

Nuvoton MCU firmware’inin Ghidra ile analizi

  • Elgato desteğine durum LED’iyle ilgili bilinen bir sorun veya ayar olup olmadığı soruldu, ancak pratik bir çözüm alınamadı
  • Nuvoton MCU’nun firmware’ini kontrol etmek için karttaki 4 pinli JST konnektör izlendi ve bunun MCU programlama konnektörü olduğu doğrulandı
  • Nu-Link2-Me ve NuMicro ICP Programming Tool ile okuma denendi, ancak çip içeriği korumalıydı
  • Bunun yerine Elgato 4K Capture Utility içinde yer alan FW_HD60_S_MCU.bin dosyası bulundu
    • ElgatoDeviceCapabilities.json dosyasına göre bu firmware, USB product ID 0x0076 olan cihaz içindi
    • Elgato bunu “Game Capture HD60 S Rev.4” olarak adlandırıyordu
  • İkili dosya Cortex-M0 firmware’i gibi görünüyordu; ilk word 0x20000E70 geçerli bir stack pointer gibi, ardından gelen word’ler ise flash adresleri biçiminde bir vektör tablosu gibi görünüyordu
  • Firmware Ghidra’ya yüklendi ve SVD-Loader kullanılarak register eşleme denendi
    • NuMicro_DFP içindeki M031AE_v1.svd, eklentide yüklenebilecek şekilde değiştirildi
    • Nuvoton’un M031BSP paketi fonksiyon tanımlamaya yardımcı oldu

Hata ayıklama için MCU değişimi ve kilidin açılması

  • Orijinal M031LD2AE yerine yeni boş bir çip takılıp Elgato firmware’i flash’landığında çalıştı, ancak çip tekrar korumalı duruma geçtiği için hata ayıklama yapılamadı
  • Ghidra’da koruma ayarını güncelleyen fonksiyon bulunup çipi kilitlemeyecek şekilde patch’lendi
  • Patch’lenmiş firmware yüklendiğinde OpenOCD ve GDB ile başlatma kodunda hata ayıklanabildi
  • LED kontrol kodu yolu firmware içinde vardı, ancak normal yürütme akışında atlanıyordu
  • GDB’de register ve RAM değerleri zorla doldurularak LED kontrol kodunun çalışması sağlandığında ışıklar yakılabildi
    • Firmware’de LED kontrol kodu bulunuyordu
    • Sorun, bu kodun normal koşullarda çalıştırılmamasıydı

Bootloader ve tam firmware yedeği

  • Koruma bitleri kaldırılmış firmware, Elgato güncelleme yolu üzerinden başka bir HD60 S’e kurularak normalde korumalı olan tüm içeriğin okunması denendi
  • Güncellemeden sonra cihaz yakalama kartı olarak çalışmıyor gibi görünüyordu, ancak çip amaçlandığı gibi kilitsiz durumdaydı
  • Bunun sonucunda şu bölgeler okunabildi
    • LDROM: Elgato’nun birinci aşama bootloader’ı
    • Veri flash’ı
    • Orijinal ayar register değerleri
    • APROM uygulama firmware’i
  • LDROM bootloader, I2C üzerinden komut ve veri alarak APROM’u yeniden flash’layabiliyordu
  • Çip koruması kaldırılmış durumdaysa bootloader uygulama firmware’ine geçmiyor, güncelleme komutu bekliyordu
    • Elgato, kilit/kilit açma bitlerini bootloader’ın bekleyip beklemeyeceğini gösteren bir sinyal gibi kullanıyordu
    • Kilidi açılmış firmware kurulduktan sonra cihazın durmasının nedeni de bu davranışla açıklanıyordu

HD60 S’in iç yapısının anlaşılması

  • Cihazın içinde ARM ailesinden iki işlemci birlikte çalışıyordu
    • Cypress/Infineon CYUSB3014 USB 3.0 çevre birimi çipi ARM926EJ-S’ti ve PC ile USB 3.0 üzerinden iletişim kuruyordu
    • Nuvoton M031LD2AE Cortex-M0 MCU, ITE video çipini ve LED’leri kontrol ediyordu
  • Nuvoton MCU, ayrı bir I2C veri yolu üzerinden ITE çiplerini yapılandırıyor ve izliyordu
    • ITE IT6802E bir HDMI alıcısı gibi görünüyordu
    • ITE IT66121FN paralel veri akışını HDMI olarak dışarı vermekten sorumlu görünüyordu
  • CYUSB3014, Nuvoton MCU’ya I2C üzerinden komut gönderiyor; Nuvoton da durum bilgisini CYUSB3014’e geri iletiyordu
  • CYUSB3014, IT6802E’den gelen video veri akışını alıp USB üzerinden bilgisayara aktarıyordu
  • Kartta ayrıca Altera MAX II CPLD de vardı; video verisinin CYUSB3014’ün alabileceği biçimde girmesinde rol oynadığı düşünülüyordu

SPI flash ve LED animasyon verisinin keşfi

  • CYUSB3014 firmware’i, Winbond W25Q32JVSSIQ 4MB SPI flash içinde korumasız olarak saklanıyordu
  • SPI flash dökümü incelendiğinde 0x300000 offset’inden itibaren küçük resimlere benzeyen veri blokları vardı
  • Nuvoton firmware’inde ne olduğu bilinmeyen 5 GPIO izlendiğinde, bu pinlerin Diodes Incorporated PI5C3257 quad 2:1 mux/demux bus switch’e gittiği görüldü
  • Bu bus switch, SPI flash’a bağlanacak tarafı CYUSB3014 ile Nuvoton MCU arasında seçiyordu
    • Başta SPI flash’ın yalnızca CYUSB3014’e ait olduğu düşünülmüştü
    • Gerçekte CYUSB3014 önyüklemesinden sonra Nuvoton MCU, SPI flash kontrolünü devralıyordu
  • Ghidra’da yeni tanımlanan fonksiyonlar bit-banging SPI işlemleri ve SPI flash silme, okuma, yazma kodlarıydı

LED arızasının gerçek nedeni

  • SPI flash’taki 0x300000 sonrası veri sıradan görseller değil, LED animasyon kareleriydi
    • Her 16 baytlık blok, 14 LED için kullanılan bir animasyon karesiydi
    • Her satırın son 2 baytı, bir sonraki kareye geçmeden önceki gecikme süresiydi
  • Nuvoton firmware’i, 0x300000 başlangıç konumundaki ilk 2 baytın 16 bitlik 0xAA55 değeri olup olmadığını kontrol ediyordu
  • LED’leri çalışmayan iki cihazın SPI flash dökümlerinde bu bölge boş veya bozuktu
    • Bir dökümde 0x300000 bölgesi neredeyse tamamen 0x00 ile doluydu
    • Bazı animasyonlar AB 03 12 39 gibi garip başlıklarla başlıyordu
  • Normal çalışan üçüncü bir HD60 S’in SPI flash’ında 0x300000’de doğru başlık ve LED verisi vardı
    • İlk 16 bitlik word, firmware’in aradığı 0xAA55 değeriydi
    • Başlıkta 26 LED animasyonuna ilişkin bilgiler yer alıyordu
    • IT1504’e yüklenen dot correction verisi 0x3007F8’deydi; ardından gelen 0x521114A7, önceki 16 baytın CRC-32 değeriydi

SPI flash patch’i ile LED’lerin geri getirilmesi

  • Sorunlu cihazın SPI flash’ında 0x000000’dan 0x2FFFFF’e kadar olan kısımda cihaza özgü veriler korundu
    • Çünkü USB seri numarası bu bölgede bir yerde bulunuyordu
  • Yalnızca 0x300000’den başlayan LED veri bölgesi, sağlam cihaz dökümünden alınan veriyle değiştirilerek bir hibrit imaj oluşturuldu
  • Bu imaj LED arızalı cihaza flash’landığında beyaz LED iki kez yanıp söndü ve kırmızı LED kısa süreliğine bir kez yandı
  • Sağlam cihaz daha eski bir revizyondu ve Nuvoton MCU modeli de farklıydı; ancak LED verisi yeni firmware’in beklediği formatla uyumluydu
  • Windows ve Mac’teki mevcut Game Capture uygulamalarının içinde de ham animasyon verisi vardı
    • Windows yolu C:\Program Files\Elgato\GameCapture\Animations
    • Mac yolu /Applications/Game Capture HD.app/Contents/Resources/Animations
    • 01.ani, 02.ani gibi dosyaların verileri LED sırasına göre yeniden düzenlendiğinde, sağlam flash dökümündeki animasyon verisiyle eşleşiyordu

Güncelleme aracı ve kurtarma prosedürünün kısıtları

  • Elgato 4K Capture Utility’nin Windows firmware güncellemesi yeterince uzun beklememe sorunu yaşıyordu
    • Güncelleme hâlâ sürerken başarısız olduğunu gösteriyordu
    • Aynen beklenirse cihaz LED’i yanıp sönüyor ve yeni firmware ile normal şekilde yeniden başlatılıyordu
    • Hata mesajının hemen ardından cihaz çıkarılırsa eksik bir flash kalabiliyordu
  • ElgatoDeviceCapabilities.json içindeki updateDurationSec değeri 40’tan 80’e çıkarılınca bu sorun çözüldü
  • Elgato, teknik destek yönlendirmediği sürece HD60 S firmware güncellemesi yapılmamasını öneriyor; özellik de ayarlar ekranındaki özel bir tuş kombinasyonunun arkasına gizlenmiş durumda
  • LED kurtarma prosedürü karmaşık
    • Firmware güncellemesine izin vermek için ElgatoDeviceCapabilities.json değiştirilir
    • Güncelleme başlatıldıktan hemen sonra cihaz çıkarılarak Cypress çipinin SPI flash’ı kontrol etmesi sağlanır
    • CYUSB3014’ün USB’den önyükleme yapması için PCB jumper’ı kaldırılır
    • Cypress SDK’daki download_fx3 ile cyfxflashprog.img RAM’e yüklenir
    • Değiştirilmiş fx3_spitest ile SPI flash’ın tamamı dump edilir ve LED bölgesi patch’lenir
    • Jumper eski hâline getirilir ve 4K Capture Utility’de normal firmware güncellemesi yapılarak Nuvoton firmware’i geri yüklenir
  • Sonuç olarak asıl onarım, toplamı 1 doların altında olan 3 çipin değiştirilmesiyle tamamlandı; LED sorununun ise bazı HD60 S’lerde görülen yazılım, programlama veya güncellemeyle ilişkili bir kusur olduğu anlaşıldı

1 yorum

 
GN⁺ 2024-09-18
Hacker News görüşleri
  • Genel yapı içinde amacın ne olduğunu anlamak zordu ve bazen pek çok katmanlı fonksiyon çağrısının derinliklerine gömülüydü
    Kaynak koduna doğrudan bakarken de bu sık olur. Yazılımların çoğu aşırı soyutlanmış durumda ve MCU'lar öylesine büyüyüp ucuzladı ki, HDMI capture cihazının içine iki ARM çekirdeği koymak gibi şeyler gömülü dünyada da görülmeye başladı. Bu cihazın birden fazla MCU'ya ihtiyacı varmış gibi görünmüyor

  • Yaklaşık 20 yıl önce Hindistan'da büyürken alım gücü düşüktü ve eşyalar pahalıydı; bu yüzden neredeyse her şeyi tamir eder ya da yeniden elden geçirerek kullanırdık
    Bir şeyi çalışır hale getirmek için türlü geçici çözüm anlamındaki jugaad çok kullanılırdı; kıyafetler de yeniden kullanılır, terziler rafu denen yamalı onarımlarla ömürlerini uzatırdı. Benimki gibi orta sınıf ailelerde bu özellikle yaygındı
    Hazır giyim ihracatı yapan bir şirkette çalışan babam, Batı'daki insanların ister araba, ister elektronik, ister kıyafet olsun tek kullanımlık eşyaları ve yenisini tercih ettiğini sık sık söylerdi; o zamanlar bu zihniyeti anlayamazdım. Ama şimdi alım gücü artıp Çin sayesinde fiyatlar düştükçe biz de atıp yenisini alma eğilimine girdik
    Yarı yolda vazgeçmeyip sadece yenisini almanın daha kolay olduğunu düşünmeyen insanlara büyük saygı duyuyorum. Bu azim ve beceriklilik gerçekten övgüyü hak ediyor

    • Yeni ürün fiyatları düşerken tamir maliyeti arttı
      Kendin tamir edebiliyor ve gereken parçaları bulabiliyorsan sorun değil. Ama birinin deneyimi ve bilgisi için para ödemen gerekiyorsa, en azından benim yaşadığım yerde bu oldukça pahalı ve gerçekten tamir edecek birini bulmak da zor. Boş dükkânlardan çok TV tamiri tabelası görüyorsun
      Neyse ki yarı emekliyim ve saatlik ücretle çalışıyorum; bu yüzden ek zamanımın parasal bir maliyeti yok. Bu sayede bir günümü bulaşık makinesini tamir etmeye ayırabiliyorum, birkaç gün sonra yine bozulursa bir gün daha ayırıp yenisini kurabiliyorum. Profesyonel bir montajcı yeni cihazı bir saatte kurardı ama en azından randevu gününü beklemem gerekmedi
    • Batı Avrupa'da da uzun süre durum benzerdi. Ebeveynlerimin kuşağı kıyafet yamayarak ve eşyaları çokça tamir ederek büyüdü
      Ancak son yaklaşık 50 yılda tüketimcilik büyüdü, kıyafet gibi ürünlerin kalitesi de fiyatı da düştü
      Son zamanlarda motosiklet bakımını kendim yapıyorum; başlangıçta yağ filtresini sökme aparatı gibi birkaç alete yatırım yapmak ve parça/sarf malzemesi almak gerekiyor. Yağlar, bakır rondelalar, eski fren hidroliği haznesi vidasının yerine geçecek vidalar gibi. Yine de servislerin istediği €1000 yerine toplam maliyet yaklaşık €100-€150 oluyor
    • 80'lerde ABD'nin kuzeydoğusunda işçi sınıfı bir ailede büyürken de durum böyleydi. Babam evdeki her şeyi ve araçları tamir ederdi; ben ağabeylerimin/ablalarımın kıyafetlerini giyerdim, küçük kardeşlerim de benimkileri giyerdi
      Annem çocukken pantolon paçalarını kısaltır, biz büyüyünce yeniden uzatırdı; dizler ya da dirsekler aşınınca da yama yapardı
      Bu ortam bana hem iyi hem kötü alışkanlıklar kazandırdı. Evdeki tamiratların neredeyse hepsini kendim yapıyorum ama çok çalıştığım için her zaman yeterli zamanım ya da enerjim olmuyor. Yapabilecek durumda olsam bile başkasına para verip yaptırmak zor geliyor; bu yüzden bozuk şeyleri gerekenden uzun süre beklettiğim oluyor
      O zamanı bakım ve tamire değil de yan projelere harcasaydım belki daha çok para kazanmış olurdum
    • Eskiden tamir, topluluk bilgisine daha yakındı. Mahallede birileri kaynak işini, bir başkası elektrik, sıva ya da kıyafet onarımını iyi bilirdi
      Bu insanlar başkalarına temel düzeye kadar öğretir, beklenmedik bir sorun çıktığında da yardım ederdi. Yani bilgi ve temel çıraklık kültürü tüm topluluğun içine işlemişti
      Bugün tamir daha çok tek başına yapılan bir iş haline geldi. YouTube gibi şeyler büyük yardım sağlıyor ama topluluk boyutu kayboldu
    • Tüketimcilik zihniyeti, güçlü ekonomi ve yüksek sosyal hareketliliğin ürettiği bir lüks gibi
      Ne yazık ki bunun yan etkisi olarak tamir ve yeniden kullanım daha az cazip görülmeye başlandı; tamir edilebilirlik ve uzun ömür de ürün özelliği olarak daha az önemli hale geldi. Şimdi özellikle nüfusun %99'u için ABD'deki ekonomik büyüme duraklamışken ne kaybettiğimiz ortaya çıkıyor. Uzun ömürlü üretilmiş şeyler yok ve şirketler de tamir edilebilir, uzun ömürlü ürünler sunmuyor ya da sunamıyor. Bu yüzden eşyalarını kendisi tamir etmeye çalışan insanlar bile sayısız engelle karşılaşıyor
  • Flash çip içindeki veri yığınının aslında bir resim olduğunu fark etmesi ilginçti. Bildiğimiz anlamda bir resim değil, çeşitli LED animasyonlarını tanımlayan veriydi
    Ben de Hue lamba animasyonları için buna benzer bir formatı bağımsız olarak tasarlamıştım. Ama ikili değil, metindi
    bulb1 bulb2
    dly R G B WW CW R G B WW CW
    100 10 25 20 0 0 25 10 20 0 0
    200 10 50 20 0 0 50 10 20 0 0
    İlk değer, bir sonraki satıra geçmeden önce beklenecek milisaniye süresidir; ardından her LED kanalının parlaklığı 100 üzerinden yazılır. Sayıyla başlamayan satırlar yorumdur ve kanallar arasında istediğiniz kadar bir veya daha fazla boşluk bırakabilirsiniz
    Ticari bir üründe benzer bir ikili biçim görmek hoşuma gitti. Aslında oldukça bariz bir yaklaşım ama yine de bunu doğrudan görmek ilginç

  • İnsanı alçakgönüllü yapan bir yazıydı. Gerçek full-stack mühendislik bu işte

    • Gerçekten insanı mütevazılaştırıyor. Bu yazıyı başlangıç noktası alsam bile bunu başarabilmem muhtemelen haftalar sürerdi
  • Elgato'nun bu yazıya nasıl tepki vereceğini görmek isterim

    • Ben de. Bu ilginç yazıyı okuyan mühendislerin gözlerinin heyecandan parladığını, yöneticilerin ise şirketin fikri mülkiyetini korumayı nasıl daha iyi yapabileceklerini sorup öfkelendiğini kolayca hayal edebiliyorum
    • Artık tepki vermesi gereken taraf, Elgato'nun sahibi olan Corsair. Ben onu daha çok halka açık, geleneksel bir şirket olarak görüyorum; bir yanıt gelirse hoş biçimde şaşırırım
    • Acaba artık LED sorununa neyin yol açtığını ya da bunun altındaki bellek bozulmasının nedenini biliyorlar mı diye merak ediyorum
  • Benim deneyimimde Elgato ürünleri ucuz ama korkunç derecede kararsız. Bu yazı nedenini büyük ayrıntıyla gösteriyor

    • Titreme ve bozulma sorunları çok kötü bir yazılım mühendisliği kültürüne işaret ediyor
    • Üzücü olan, Key Light ya da Stream Deck gibi ürünlerin aslında harika ve gerçekten kullanışlı olması
      Yazılımda isteyebileceğiniz tüm özellikler var, kendi eklentilerinizi yazabiliyorsunuz ve eklenti geliştirme süreci de belgelenmiş. Hepsi gerçekten iyi
      Ama pratikte Key Light'ın gücünü sürekli kapatıp açmanız gerekiyor ve Windows'ta Stream Deck uygulamasını da durmadan yeniden başlatmak zorunda kalıyorsunuz
  • Böyle projelerde motivasyonu nasıl koruduklarını merak ediyorum. Parçaları tekrar tekrar sipariş edip gelmesini beklemek gerekiyor; özellikle Çin'den gelen parçalarda bu bekleme yüzünden epey proje yarım kalıyor

    • Zaman bir sorun ama bu parçaları sipariş etmenin maliyeti de sorun. Her biri birkaç cent olsa da ihtiyaç duyacağınız tüm parçaları baştan bilmek mümkün değil
      Doğru saydıysam yazar en az üç kez sipariş vermiş. Yine de gerçekten çok ilginç
  • Termal kamera yoksa karta izopropil alkol sürüp en hızlı nerede buharlaştığına bakabilirsiniz
    Elbette bu yöntem yalnızca düşük voltajlı cihazlarda uygulanabilir

  • Gerçeği araştırıp sonuna kadar iz sürebilme yeteneği bizi yüce kılan, bir şeyler üretip geliştiren insani yönümüzdür. Bu kişi dünyevi bir nesneyi araştırırken çok derin bir ruhsal yol yürümüş
    Cihazların bize direnmesi çok üzücü, sinir bozucu ve adeta cehennem gibi. Bilgisayarlar ve aygıtlar, kendilerini oluşturan gerçeği güçlendirip dışa vurmalı. Ama insanlık kendi yaptığı kabukların içine hapsolmuş durumda; katılımı ve öğrenme imkânını reddeden tepeden inme bir tüketimcilik içinde yaşıyoruz. Özellikle bilgisayarlar çoğu zaman gerçeği ve anlayışı gizleyen başlıca opaklaştırma aygıtları haline geliyor. Muazzam bir potansiyel feci şekilde boşa harcanıyor
    Umarım hayattayken açık makinelerin ortaya çıkışına yönelik bir kırılmayı görürüz. Doug'u alkışlıyorum