28.01.2011

Ethernet kartının arızasının tespiti

Bilgisayarın birinde ethernet kartı çalışmıyordu. Nedeni incelemek istedim. Önce ethernet kartının MAC adresi bana biraz garip göründü. Daha önce hiçbir MAC adresinin FF:FF ile başladığını görmemiştim. MAC adresi üreticisini sorgulamak için kullandığım şu sayfa da bana böyle bir şey olamayacağını söyledi. Sonra elimdeki kayıtlara bakarak bu bilgisayarın ağ kartının MAC adresinin ilk zamanlarda FF:FF ile başlamadığını gördüm. Eskiden 00:03 ile başlıyormuş. Windows'un ayarlarında bu değişime sebep olacak birşey bulamadım. Ama bir de bir linux dağıtımı ile duruma göz atmak istedim.

Elime geçen ilk live CD Lubuntu ile bilgisayarı açtım. İlk olarak
ifconfig -a
ile bilgisayardaki ağ arayüzlerini listeledim. Bilgisayarda iki ethernet kartı vardı ama ifconfig çıktısında arızalı kartla ilgili birşey listelenmedi. Arından lspci ile PCI veriyolundaki cihazları listeledim. Burada iki ethernet kartı için çıkş vardı, ama sorunun kaynağına götürcek önemli bir bilgiye rastlamadım.

$ sudo lspci -s 01:08.0 -v
01:08.0 Ethernet controller: Intel Corporation 82801BA/BAM/CA/CAM Ethernet Controller (rev 03)
    Subsystem: Intel Corporation Device 3013
    Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Interrupt: pin A routed to IRQ 11
    Region 0: Memory at fe9ee000 (32-bit, non-prefetchable) [size=4K]
    Region 1: I/O ports at de80 [size=64]
    Capabilities: [dc] Power Management version 2
        Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
        Status: D0 PME-Enable- DSel=0 DScale=2 PME-
    Kernel modules: e100

Bundan sonra da dmesg ile çekirdek mesajlarına baktım. İlk kullandığım filtre eth ile birşey bulamadım. Daha sonra ethernet kart(lar)ının kullandığı kernel modülü (driver) adı e100'ü kullandım.
$ dmesg | grep -i e100
[    0.147376] pci 0000:01:08.0: Firmware left e100 interrupts enabled; disabling
[    0.147414] pci 0000:01:0a.0: Firmware left e100 interrupts enabled; disabling
[    2.453617] e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI
[    2.453630] e100: Copyright(c) 1999-2006 Intel Corporation
[    2.454160] e100 0000:01:08.0: PCI INT A -> Link[LNKE] -> GSI 11 (level, low) -> IRQ 11
[    2.475976] e100: 0000:01:08.0: e100_eeprom_load: EEPROM corrupted
[    2.499144] e100 0000:01:08.0: PCI INT A disabled
[    2.499187] e100: probe of 0000:01:08.0 failed with error -11
[    2.499663] e100 0000:01:0a.0: PCI INT A -> Link[LNKG] -> GSI 11 (level, low) -> IRQ 11
[    2.523051] e100 0000:01:0a.0: PME# disabled
[    2.567253] e100: eth0: e100_probe: addr 0xfe9ef000, irq 11, MAC addr 00:02:b3:98:7f:08
Ve burada anahtar bilgiye ulaştım! Yukarıda kırmızı ile işaretlediğim yerde bir EEPROM bozulmasından bahsediyor. Demek ki MAC adresinin FF:FF ile başlamasının sebebi de buymuş. Böyle bir bilgiye Windows ile (üçüncü parti araç kullanmadan) asla ulaşamazdım. Bu, daha önce de başıma gelmişti. Bazen önemli bir donanım bileşeninin arızası bilgisayarın düzgün çalışmasını engelliyor. Ancak Windows bunu doğru bir şekilde haber vermiyor. Ama linux dmesg kayıtları bu iş için süper!

Bu ethernet kartı on-board olduğu için değiştirme şansım yok. EEPROM'u tekrar programlama şansım var mıdır acaba? Google amca'ya sormak gerek...

Ek (22.08.2011)
Denemedim ama Linux tarafında bir yarabandı çözümü varmış.
/etc/modprobe.d/options
dosyasına
options e100 eeprom_bad_csum_allow=1
satırını ekleyince ve ardından
sudo update-initramfs -u
yapınca çalışacakmış.

17.01.2011

Virtualbox sanal makinelerde Java sorunu

Virtualbox'ta Windows XP SP2 yüklü bir sanal makinede Java kullanımıyla ilgili sorun yaşıyordum. javaw.exe prosesi, %100 işlemci kullanarak java uygulamasının başlamasını engelliyordu. Bu konunun Virtualbox guest additions ile ilgisi olduğunu düşünerek Google'a yaptığım bir arama çok güzel sonuçlar verdi.

Önce konunun Virtualbox guest additions'ın deneysel 3D hızlandırmasıyla ilgili olabileceği konusunda bir fikre varılmış. Bazıları 3D desteği olmadan kurulum yapılmasını önermiş. Java gibi bir yazılımın neden DirectDraw veya Direct3D özelliklerine ihtiyaç duyduğunu bilmiyorum. Böyle bir gereksizlik sonucunda Virtualbox'ın 3D desteğini devre dışı bırakmak pek mantıklı değil. Mümkünse bu kalsın, başkası gitsin. Konunun taa en sonunda bir "uzman" görüş, 3D özelliğinden vazgeçmeden bunun yapılabilirliğini ortaya koymuş. Java'nın bir ortam değişkeni kullanarak sistemin 3D desteğini kullanmadan ne yapacaksa yapmasının bir yolu olduğunu bildirmiş. Buna göre
set J2D_D3D=false
ataması işi çözüyormuş. Peki bunu nereye yazacağız? Denetim Masası\Sistem Özellikleri\Gelişmiş\Ortam Değişkenleri sekmesinde Sistem değişkenleri alanına kısmında Yeni düğmesine basarak adı J2D_D3D değeri de false olan bir değişken yaratarak.


Denenmiş ve sonuca ulaşılmıştır.

13.01.2011

sudoers

Linux'ta hangi kullanıcının hangi işlemi (hangi makine üzerinde) kim olarak yapacağını, bu işlem için şifre girmeye gerek olup olmadığını kontrol eden mekanizma sudoers. Bu verileri tutan dosya da /etc/sudoers dosyası. Lakin bu dosyayı doğrudan düzenleyemiyoruz, visudo'yu kullanıyoruz:
sudo visudo
visudo, eskiden sudoers dosyasını vi editörüyle düzenlemek için verilmiş bir isim. Ubuntu 10.10'da artık default editor vi değil, nano. Bunu değitşrimek için şu sayfada anlatılanları uygulayabilirsiniz.

sudoers içinde alias denen bir takma ad yapısı var. user, host, runas ve command alias olarak 4 çeşit alias tanımlanabiliyor. Örneğin bir kullanıcı alias'ı oluşturmak için
User_Alias MUHASEBE=user1, user2
şeklinde bir tanımlama yapılır. Bu şekilde yapılan şey bir MUHASEBE grubu oluşturmak değil, user1 ve user2 kullanıcılarına kısaca MUHASEBE diye hitap etmek.

Benzer şekilde bir command alias tanımlaması yapmak için
Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/reboot, /sbin/halt
yazılabilir. Bu şekilde shutdown, reboot ve halt komutları -daha sonra kullanılmak üzere- SHUTDOWN_CMDS ismi altında toplanmış olur. Bir tane de host alias örneği yapalım. Örneğin 192.168.2.0/255.255.255.0 subnet'inde yer alan bilgisayarları içine alacak şu tanımlamayı yazalım.
Host_Alias MUHNET = 192.168.2.0/255.255.255.0
sudoers'ın içinde bir kullanıcının özellikleri şu şekilde tanımlanıyor:
<user> <host> = <operator> <tag> <command>
Bu kurala göre aşağıdaki sudoers tanımlamasını yapabiliriz.
MUHASEBE MUHNET = NOPASSWD: SHUTDOWN_CMDS
Bunun anlamı, MUHASEBE kullanıcı alias'ına uyan kullanıcıların (user1 ve user2),  MUHNET subnetindeki bilgisayarları kapatmak ve tekrar başlatmak için yetkili olsunlar (parola istenmesin).

Benzer bir şekilde admin grubu içindeki (admin bir sistem grubu, user alias değil) içindeki kullanıcılara root yetkileri vermek için
%admin ALL=(ALL) ALL
yazılabilir.

10.01.2011

VirtualBox'ta 3D hızlandırıcıyı etkinleştirmek

VirtualBox'ın güzel özelliklerinden biri de 3D (3 boyut) sanal makinelerin hızlandırma desteğinin olması. Eğer evsahibi (asıl) makineninizin güzel bir ekran kartı varsa ve 3 boyutlu görsel efektlerin hesaplamaları için ekran kartınızı kullanıyorsanız, bunu sanal makinelerinizden de yapabilirsiniz. Bunun için yapılması gereken birkaç işlem var. Öncelikle sanal makinenin 3D hızlandırıcısının etkinleştirilmiş olması ve yeterli miktarda video belleğine sahip olması gerekir. Bu işlemler için şu adımları izlemek gerek.

Önce sanal makineniz kapalıyken, makinenin "Ayarlar" penceresini açarak "Display" kısmına gelerek "Video Memory"yi artırmak (mesela 128 MB) ve alttaki "Genişletilmiş Özellikler" bölümünden "3D Hızlandırmayı Etkinleştir" checkbox'ını işaretlemek gerek. Windows sanal makineler için "Enable 2D Video Acceleration" da  seçilebilir. Ancak Windows harici sanal makinelerde bu seçenek seçilebilir olmayacak.


Daha sonra sanal makineyi başlatarak "Misafir Eklentileri"ni kuracağız. Ancak, VirtualBox Kullanıcı El Kitabı'nda belirtildiği gibi, 3D hızlandırıcısı için Misafir Eklentileri'nin Windows sanal makineler üzerine "Güvenli Kip"te kurulması gerek. Bunun için makineyi açarken F8'e basarak güvenli kipi seçmek gerek. Windows Güvenli Kip'te açıldıktan sanal makinenin penceresinin "Aygıtlar" menüsünden "Misafir Eklentilerini (Guest Additions) yükle..." komutunu vererek kuruluma başlayabiliriz.


Bundan sonra sanal makinemize %ProgramFiles%\Oracle\VirtualBox\ klasörüün altındaki VBoxGuestAdditions.iso CD kalıp dosyası otomatik olarak bağlanacak. "İleri" tuşuna basarak devam ederken şu ekrana gelindiğinde


"Direct 3D Support (Experimental)" checkbox'ının seçilmesi gerek. İmzasız Windows sürücülerinin kurulması için onayınız istenecek. Bunları onayladıktan sonra sanal makine bir kez tekrar başlayarak (güvenli kipte olduğumuzdan değiştirilen sistem dosyasını geriye dönmek için Windows File Protection kapalı olduğundan sorun çıkmayacak).

3D desteğini denemek için sanal makineniz açıldıktan sonra Başlat\Çalıştır'a dxdiag yazıp enter'a basın. Bu komut bize DirectX diagnostic penceresini açacak. Windows XP ve DirectX v9c ve öncesi için Direct3D desteğini sınayacağımız bir sekme (Display) bulacağız. Vista ve üzerinde DirectX v10 ve sonrası için böyle bir sınama sayfası yok.


Burada "Test DirectDraw" ve "Test Direct3D" düğmeleriyle sırasıyla 2 boyutlu ve 3 boyutlu testleri yapabilirsiniz. Genellikle 2 boyutlu testler sorunsuz çalışıyor. Ancak 3 boyutlu testlerde önce DirectX v7, sonra DirectX v8 ve en son DirectX v9 yüzeyleri denenirken bazı hatalar olabiliyor. Bu da 3D desteğinin henüz deneme aşamasında olmasından kaynaklanıyor olabilir. İşte testlerden görüntüler:

DirectDraw siyah/beyaz diktörtgenler

DirectDraw zıplayan beyaz kare (tam ekran değil)

DirectDraw zıplayan beyaz kare (tam ekran)

Direct3D testleri (v7 ve v8 hatalı)

Direct3D testi, DirectX v9 yüzeyleri ile başarılı

7.01.2011

Samsung LCD televizyonlarda DTS meselesi

DTS ses izi olan filmlerin ses izlerini önce bilgisayarda AC3 veya mp3'e çevirelim, transcoding yapan bir DLNA sunucu bulalım falan derken Samsung LCD televizyonlarda DTS'li filmleri izleyememiz 2 yaşına basarken Samygo projesi sonuç verdi. Müjde!

DTS'yi çözememesinin yanısıra filmlerinin ikinci sesini de duymamıza imkan vermeyen Samsung, aldığımız günden beri bu konu ile ilgili bir firmware güncellemesi bile yapmazken, daha beter köstek olarak 3000 serisi firmware'lerle önümüzü iyice tıkamıştı.

Bu iki sorun da şu anda hallolmuş gözüküyor. Konunun ayrıntısını donanimhaber.com'daki şu başlık altında takip edebilir, ya da doğrudan sourceforge'daki şu proje sayfasına gidilebilir (artık www.samygo.tv adresi de var). Yazılanlara göre Samygo projesinin kurucusu Erdem Altınyurt, bir yarışma düzenleyerek Samsung LCD televizyonlarda DTS sorununu çözecek kişiye belli bir süre boyunca toplanacak bağışları verme hedefini koymuş. DTS olayı çözülmeden de gayet önemli bir amaca hizmet eden Samygo projesi bünyesinde Samsung televizyonlar için çok sayıda araç var.

Önce söylemek gerekir ki, çözümü uygulayabilmek için kullandığınız firmware'in 3000 serisi bir sürüm olmaması gerek. Bu uyarı bir süredir ilgili yerlerde vurgulanıyor. Bu sebeple ben de hala 1000 serisi bir firmware kullanmaktaydım. Ancak ilk denememde başarısız olunca firmware'imi 2005'e yükselttim.

DTS çözümü, Samsung'un İçerik Yönetici (Content Manager) kısmına bir oyun eklemekten ibaret. Mevcut firmware'de bir değişiklik yapmadığı gibi garanti kapsamı dışına da çıkarmıyor. Önce şu sayfadan "DCA module" başlığı altındaki v0.3 sürüm dosyayı download ettim. Sonra bu uygulamayı bir boş ve FAT32 olarak formatlanmış bir USB belleğin içine açtım. USB bellektekiğin kök dizininde şu dosyalar oldu:
clmeta.dat
libavcodec.so.52
libavcore.so.0
libavformat.so.52
libavutil.so.50
libdca.so.disabled
samygodca.png
samygodca.so
samygodca_inj.so
Burada libdca.so.disabled dosyası, devre dışı bırakılan, VLC player'da kullanılan DTS çözücüsü. DonanimHaber.com'daki başlıktan takip ettiğim kadarıyla bu kütüphane kullanıldığında fazla CPU kullanımı sebebiyle altyazılarda gecikme ve uzaktan kumandaya geç cevap verme gibi sorunlar yaşanmış. Bunun yerine ffmpeg kütüphanesi tercih edilmiş. libdca'nın çözemediği DTS'lerin olma ihtimaline karşı bu dosya tekrar etkinleştirilmek üzere bu pakete dahil edilmiş sanıyorum.

Bu haliyle USB belleği televizyona taktıktan sonra uzaktan kumandanın Content (Content Libary) tuşuna basarak İçerik Yönetimi menüsüne gelip, USB'de görülen DCA module'ünü televizyonun dahili belleğine kopyalamak gerek. Sonra da dahili bellek üzerinden bu modülü çalıştırmak gerek. Uygulanacak adımlar TV'nin modeline göre değişebilir. Bu konuda yukarıda verdiğim bağlantılardan yardım alabilirsiniz.

Şu anda DTS sese sahip bir çok filmi de sorunsuz izleyebiliyorum. Siz de Samygo projesini faydalı buluyorsanız anasayfadaki bağlantısını tıklayarak projeye destek olabilirsiniz. Her ne kadar DTS yarışması sonuçlanmış olsa da Samygo'nun ilerdeki projelerinde bu katkıya ihtiyacı olacaktır.

http://www.linuxtoday.com/developer/2010112200535NWEMDV