Arduino'da "Device or resource busy" hatası, IDE'nin kartın bağlı olduğu seri portu yükleme için açamadığını söyler. Çoğunlukla portu o anda başka bir şey kullanıyordur: açık kalmış bir Seri Monitör, Seri Çizici ya da başka bir program. Önce bu pencereleri ve programları kapat, USB kabloyu çıkarıp tak, Tools menüsünden kart ve port seçimini kontrol et, sonra yüklemeyi yeniden dene. Bu yazı mesajı parçalarına ayırıp hangi belirtide hangi adıma gideceğini gösteriyor.
Hata mesajı parça parça ne söylüyor?
Mesaj dört parçadan oluşur ve her biri ayrı bir bilgi verir.
avrdude: Arduino IDE, AVR tabanlı kartlara (Uno ve Nano gibi) programı yüklerken arka planda avrdude adlı aracı çalıştırır. Hata mesajı bu aracın çıktısıdır, yani IDE'nin kendisi değil, yükleme adımı hata vermiştir.
ser_open(): avrdude'un seri portu açma adımının adıdır. Hata, yükleme sürecinin en başında, port henüz açılamadan ortaya çıkar.
<port>: IDE'nin yükleme için seçtiği port adıdır. Windows'ta COM3 gibi, Linux'ta /dev/ttyACM0 gibi görünebilir. Senin ekranında kendi portunun adı yazar.
Device or resource busy: Port başka bir süreç tarafından kullanılıyor ya da o anda açılamıyor demektir.
Buradan çıkan sonuç şu: Hata portun bozuk olduğunu değil, portun o anda erişilebilir olmadığını gösterir. Ayrıca kodunda ya da kartın programında bir sorun olduğu anlamına gelmez. Yükleme sırasında kartla henüz hiç konuşulmamıştır; takılan nokta, konuşmanın yapılacağı kapıdır.
Bu yüzden kodunu değiştirmek, kartı değiştirmek ya da IDE'yi yeniden kurmak çoğunlukla ilk adım olmamalıdır. Önce portu kimin tuttuğuna bakmak gerekir.
Karar ağacı: Belirtin hangi dala gidiyor?

Aşağıdaki tablo, ekranda gördüğün belirtiyi gidilecek kontrol adımıyla eşleştirir. Menü adları IDE sürümüne ve dil ayarına göre farklı görünebilir; burada Arduino IDE'deki Tools menüsünün Board ve Port öğeleri esas alınmıştır.
| Belirti | Olası neden | Gidilecek dal |
|---|---|---|
| Tools menüsünde Port soluk, boş ya da kartın port adı görünmüyor | Kart bilgisayara tanıtılmamış, kablo yalnızca şarj kablosu olabilir ya da yanlış kart seçilmiş olabilir | Port ve kart seçimi, kablo |
| Port görünüyor ama Seri Monitör ya da Seri Çizici açık | Açık pencere portu tutuyor | Pencereleri kapat |
| Pencereler kapalı, hata sürüyor | Portu başka bir program tutuyor ya da bağlantı takılı kalmış olabilir | Portu tutan diğer yazılımları kapat, kabloyu çıkarıp tak |
| Port listede ama hata "busy" yerine "not in sync" ya da "programmer is not responding" gibi bir mesaja dönüştü | Port açılıyor, fakat kartla iletişim kurulamıyor | 0 RX ve 1 TX pin bölümü |
| Hepsi denendi, hata aynı | Bilgisayar tarafında takılı kalmış bir bağlantı olabilir | Bilgisayarı yeniden başlatma ve işletim sistemi bölümü |
Önce ilk satırdan başla: port hiç görünmüyorsa "busy" hatasını aramanın anlamı yoktur, çünkü sorun portu tutan bir şey değil, portun hiç görünmemesidir. Port görünüyorsa ikinci satırdaki pencereleri kapatmak en hızlı kontroldür. Hata "busy"den "not in sync" gibi bir mesaja döndüyse bu iyi bir işarettir: port artık açılıyor, sorun kartla iletişimdedir ve dördüncü satırdaki dala geçmelisin.
Adım adım kontrol listesi: Her adımdan sonra yeniden yükle
Aşağıdaki sırayı baştan sona uygula ve her adımın sonunda yüklemeyi tekrar dene. Hangi adımın işe yaradığını böyle anlarsın, gereksiz yere sonraki adıma da geçmezsin.
- Doğru kartı seç. Tools menüsünde kart modelinin elindeki kartla aynı olması, yükleme aracının doğru ayarlarla çalışmasını sağlar. Yeniden yüklemeyi dene.
- Doğru portu seç. Tools menüsündeki port listesine bak, kartı USB'den çıkarıp tekrar tak. Listeden kaybolup yeniden beliren port kartının portudur; başka bir porta yükleme yapmak hatayı sürdürebilir. Yeniden yüklemeyi dene.
- Seri Monitör ve Seri Çizici pencerelerini kapat. Bu pencereler portu açık tutabilir, yükleme aracı da aynı porta bağlanamaz. Yeniden yüklemeyi dene.
- Aynı kartla haberleşen diğer yazılımları kapat. İkinci bir Arduino IDE penceresi, terminal programı ya da başka bir geliştirme aracı portu tutuyor olabilir; port aynı anda tek programa açık kalabilir. Yeniden yüklemeyi dene.
- USB bağlantısını yenile. Kabloyu çıkarıp tak, gerekirse bilgisayarda başka bir USB girişi dene. Yalnızca şarj için üretilmiş kablolar veri aktaramaz, bu yüzden veri aktarabilen bir kablo kullan. Yeniden yüklemeyi dene.
- Bilgisayarı yeniden başlat. Portu arka planda tutan, görünmeyen bir işlem varsa yeniden başlatma onu da kapatır. Yeniden yüklemeyi dene.
Yükleme başarılı olduğu anda dur, kalan adımlara gerek yok. Hata sürüyorsa bir sonraki adıma geç; altıncı adımdan sonra da devam ediyorsa yazının son bölümündeki bilgileri toplamaya başla.
Port adı işletim sistemine göre nasıl görünür?

Hata mesajındaki <port> yerinde, bilgisayarının kart için verdiği port adı yazar. Bu ad işletim sistemine göre farklı görünür:
- Windows:
COM3gibi COM ile başlayan adlar. - Linux:
/dev/ttyACM0ya da/dev/ttyUSB0gibi adlar. - macOS:
/dev/cu.usbmodem...biçiminde adlar.
Numaralar ve sonekler bilgisayardan bilgisayara, hatta aynı bilgisayarda farklı USB girişinde değişebilir. Bu yüzden başka bir kaynaktaki port adını kopyalamak yerine kendi listene bakmalısın.
Seçtiğin portun kartına ait olup olmadığını şöyle kontrol edebilirsin:
- Hata mesajındaki port adını not et.
- Tools menüsündeki port listesini aç ve kartı çıkarıp takarak hangi adın kaybolup geri geldiğine bak.
- Listedeki kart portu ile hata mesajındaki ad aynı değilse doğru portu seçip yüklemeyi yeniden dene.
- İkisi aynıysa seçim doğrudur; asıl sorun başka bir programın portu tutmasıdır.
Bazı sistemlerde seçili portu, kart bağlıyken başka bir program ya da arka planda çalışan bir işlem açık tutabilir. Hata mesajındaki "Device or resource busy" ifadesi de portun o anda başka biri tarafından kullanıldığını anlatır. Önceki bölümde pencere ve program kapatma adımları bu yüzden yer alıyor.
0 RX ve 1 TX pinleri: Ayrı bir belirti grubu
0 numaralı (RX) ve 1 numaralı (TX) pinler, Uno benzeri kartlarda kartın USB seri hattıyla paylaşılır. Bu pinlere bir Bluetooth modülü, GPS modülü ya da başka bir seri cihaz bağlıysa yükleme sırasında karttan gelen veri akışı bozulabilir. Kendi kartının bu pinleri nasıl paylaştığını Arduino resmî dokümantasyonundaki kart sayfasından kontrol et; kart ailesine göre ayrıntılar değişir.
Bu durum port meşgul hatasıyla aynı belirti grubu değildir. Port meşgulse bilgisayar porta hiç erişemez. Pinlerdeki bağlantı ise portun açılmasına engel olmaz; yükleme başlar, ama kart beklenen yanıtı veremez. Bu yüzden mesaj çoğunlukla not in sync gibi bir senkronizasyon hatasına dönüşür.
Pratik sınama
Bluetooth ya da GPS modülü bağlı bir proje düşün. Kod yüklenmiyorsa şu sırayı izle:
- Kartın USB bağlantısını çıkar.
- 0 ve 1 numaralı pinlere giden kabloları ya da modülü ayır.
- Kartı yeniden tak ve kodu yükle.
- Yükleme tamamlandıktan sonra modülü yeniden bağla.
Yükleme modül ayrıyken başarılı oluyor ve takılıyken başarısız oluyorsa sorunun kaynağı bu pinlerdir. Kalıcı çözüm olarak modülü başka pinlere taşımayı düşünebilirsin; bu durumda kodundaki seri haberleşme ayarını da buna göre değiştirmen gerekir.
Mesaj hâlâ Device or resource busy olarak kalıyorsa bu dala girme. Önceki bölümdeki kontrol listesine dön ve adımları sırayla yeniden uygula.
Hata sürerse hangi bilgiyle ilerlemelisin?
Kontrol listesi bittiğinde sonuç hâlâ aynıysa sorunu daraltmak için şu dört bilgiyi not et:
- Hata mesajındaki port adı
- İşletim sistemin
- Kartının tam modeli
- Mesajın hangi adımdan sonra değiştiği ya da hiç değişmediği
Bu bilgilerle Arduino resmî dokümantasyonunda ve Arduino topluluk forumunda arama yapmak, hata mesajını tek başına yapıştırmaktan daha verimlidir. Aynı belirtiyi yaşayan birinin yazısını bulman kolaylaşır, kendi sorunun için de daha net bir soru yazabilirsin.
Hata ayıklamanın temel mantığı da buradadır: her seferinde tek bir değişken değiştir, sonucu gözle, ancak ondan sonra bir sonraki adıma geç. Kabloyu, portu ve kartı aynı anda değiştirirsen düzelmenin nedenini bilemezsin. Aynı yaklaşım yazılım öğrenirken de işe yarar; bir programın hatasını ararken adımları tek tek sınamak ve sonucu kaydetmek algoritmik düşünmenin parçasıdır. Bu becerini ölçmek istersen dilden bağımsız çalışan ücretsiz Algoritmik Düşünme Testini çözebilirsin.
Sık Sorulan Sorular
Seri Monitör açıkken Arduino'ya kod yüklenir mi?
Arduino IDE, yükleme sırasında kendi Seri Monitörünü çoğu durumda yönetir; bu davranış sürüme göre değişebilir. Asıl sorun başka bir şeyin portu tutmasıdır: ikinci bir IDE penceresi, başka bir seri terminal programı ya da önceki işlemden kalan bir bağlantı yüklemeyi engelleyebilir. Hata aldığında bunları kapat ve yeniden dene.
Port listede görünmüyorsa ne yapmalıyım?
Önce kablonun veri aktarabildiğinden emin ol; yalnızca şarj için üretilmiş kablolar portun hiç görünmemesine yol açabilir. Sonra başka bir USB girişi ve başka bir kablo dene. Kartın USB çipine bağlı olarak ayrıca sürücü gerekebilir; bunu kartının resmî sayfasından kontrol et.
Kartı çıkarıp taktığımda port adı neden değişiyor?
İşletim sistemi cihazı yeniden tanıdığında ona farklı bir ad ya da numara atayabilir. Kartı başka bir USB girişine taktığında da aynı şey olabilir. Her bağlantıdan sonra IDE'deki port seçimini kontrol et ve güncel portu seç.
Aynı hata hem 'busy' hem 'not in sync' olarak görünüyorsa fark ne?
Busy portun açılamadığını, yani karta hiç ulaşılamadığını gösterir. Not in sync ise portun açıldığını ama karttan beklenen yanıtın gelmediğini gösterir; bunun nedenleri arasında yanlış kart seçimi ya da 0 ve 1 numaralı pinlere bağlı devre bulunabilir. İki mesajı da görüyorsan hangi adımdan sonra değiştiğini not et ve o mesajın dalını izle.
Bu hatayla karşılaştığında önce mesajı parçalarına ayır, ardından kontrol listesini tek değişkenle, sırayla uygula. Böylece sorunun nerede çözüldüğünü de görebilirsin.