با دستور sudo apt-get install firmware-atheros و یه ریستارت مشکل بلوتوث حل شده.الان هم خروجی دستور sudo dmesg | grep -Ei 'blue|firmware|fw' به شکل زیر شده :
[ 0.412506] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[ 2.412361] psmouse serio4: elantech: assuming hardware version 3 (with firmware version 0x450f01)
[ 3.849326] platform regulatory.0: firmware: direct-loading firmware regulatory.db
[ 3.850032] platform regulatory.0: firmware: direct-loading firmware regulatory.db.p7s
[ 4.857868] Bluetooth: Core ver 2.22
[ 4.857910] Bluetooth: HCI device and connection manager initialized
[ 4.857916] Bluetooth: HCI socket layer initialized
[ 4.857919] Bluetooth: L2CAP socket layer initialized
[ 4.857926] Bluetooth: SCO socket layer initialized
[ 4.919940] usb 1-1.1: firmware: direct-loading firmware ath3k-1.fw
[ 5.359304] r8169 0000:04:00.0: firmware: failed to load rtl_nic/rtl8168e-2.fw (-2)
[ 5.359550] firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
[ 5.359821] r8169 0000:04:00.0: Direct firmware load for rtl_nic/rtl8168e-2.fw failed with error -2
[ 5.359827] r8169 0000:04:00.0: Unable to load firmware rtl_nic/rtl8168e-2.fw (-2)
[ 5.711109] usb 1-1.1: firmware: direct-loading firmware ath3k-1.fw
[ 6.355966] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 6.355970] Bluetooth: BNEP filters: protocol multicast
[ 6.355976] Bluetooth: BNEP socket layer initialized
[ 6.490808] nouveau 0000:01:00.0: firmware: failed to load nouveau/nvd9_fuc084 (-2)
[ 6.490815] nouveau 0000:01:00.0: Direct firmware load for nouveau/nvd9_fuc084 failed with error -2
[ 6.490827] nouveau 0000:01:00.0: firmware: failed to load nouveau/nvd9_fuc084d (-2)
[ 6.490830] nouveau 0000:01:00.0: Direct firmware load for nouveau/nvd9_fuc084d failed with error -2
[ 6.490832] nouveau 0000:01:00.0: msvld: unable to load firmware data
[ 7.089287] Bluetooth: RFCOMM TTY layer initialized
[ 7.089296] Bluetooth: RFCOMM socket layer initialized
[ 7.089305] Bluetooth: RFCOMM ver 1.11
[ 16.501488] nouveau 0000:01:00.0: firmware: failed to load nouveau/nvd9_fuc084 (-2)
[ 16.501497] nouveau 0000:01:00.0: Direct firmware load for nouveau/nvd9_fuc084 failed with error -2
[ 16.501519] nouveau 0000:01:00.0: firmware: failed to load nouveau/nvd9_fuc084d (-2)
[ 16.501523] nouveau 0000:01:00.0: Direct firmware load for nouveau/nvd9_fuc084d failed with error -2
[ 16.501526] nouveau 0000:01:00.0: msvld: unable to load firmware data
[ 112.961781] nouveau 0000:01:00.0: firmware: failed to load nouveau/nvd9_fuc084 (-2)
[ 112.961788] nouveau 0000:01:00.0: Direct firmware load for nouveau/nvd9_fuc084 failed with error -2
[ 112.961801] nouveau 0000:01:00.0: firmware: failed to load nouveau/nvd9_fuc084d (-2)
[ 112.961804] nouveau 0000:01:00.0: Direct firmware load for nouveau/nvd9_fuc084d failed with error -2
[ 112.961806] nouveau 0000:01:00.0: msvld: unable to load firmware data
توی خروجی در مورد bluetooth چیز مشکل داری نمیبینم.
ولی کارت شبکه سیمی به firmware انحصاری نیاز داره. میتونه هم بدون firmware انحصاری کار کنه، ولی فکر کنم بعضی قابلیتهای اون دردسترس قرار نگیرن.
firmwareهای مورد نیازش همراه بسته firmware-realtek هست.
گرافیک هم به firmware نیاز داره که توی ارسال بالا گفتم چجوری میتونید اونها رو از درایورهای انحصاری انویدیا استخراج و نصب کنید.
تو خروجی دستور الان دیگه خبری از سطر [ 4.919426] Bluetooth: Firmware file "ath3k-1.fw" not found نیست. به خاطر این خطا بود که Firmware آزاد کار نمیکرد.میخوام برای رفع مشکل بیشتر این دستور رو بشناسم.اصلا این دستور شل داره به کرنل چه دستوری میده !؟ syntax اش رو خوب درک نکردم
اصلا bluetooth شما با firmware آزاد کار نمیکنه. firmware انحصاری میخواهد که همراه بسته firmware-atheros قرار داره.
با سختافزار فعلی شما، کلا از firmwareهای همراه بسته firmware-ath9k-htc هیچ استفادهای نمیشه.
این دستور (dmesg) چیز خیلی خاصی به کرنل نمیگه. فقط گزارشهای کرنل رو میخونه و نمایش میده.
گزارشهای کرنل از طریق دوتا فایل زیر دردسترس userspace قرار دارند
/proc/kmsg
/dev/kmsg
البته با syscallها هم میشه. مثلا با ()syslog. دقت کنید این ()syslog با برنامه syslog فرق داره.
اولی یه تابع هست که برنامهها میتونند از اون استفاده کنند تا گزارشهای کرنل رو بگیرن. دومی یه برنامه هست که گزارشهای کرنل رو میخونه و روی حافظه دایمی ذخیره میکنه. ممکن هست اونها رو به شبکه هم بفرسته.
دستور dmedg به طور پیشفرض فایل kmsg توی /dev/ رو میخونه. ولی میشه موقع اجرا عوضش کرد.
این متنهایی که دیدید، توسط کرنل و ماژولهاش تولید و توی یه قسمتی از حافظه سیستم (رم) ذخیره میشه. با خوندن دوتا فایل بالا یا فراخوانی syscall مناسب میشه این متنها رو دید.
کرنل ۸ تا سطح مختلف برای گزارشها داره.
اولی debug هست. گزارشهای این سطح مربوط به عیبیابی هست. معمولا طولانی و زیاد هم هستند. معمولا به طور پیشفرض گزارشهای این سطح نمایش داده نمیشن.
بعدی، info هست. اکثر گزارشهای کرنل توی این سطح قرار دارند. توی این گزارشها معمولا به طور کلی نوشته میشه که چه کاری انجام شده. مثلا اینکه یه چیپ بلوتوث روی یه آدرس pcie شناسایی و فعال شده. یا پردازنده کامپیوتر چنتا هسته داره و اینجور چیزها.
سطح بعدی، notice هست. گزارشهای این سطح تقریبا مشابه گزارشهای سطح info هستند ولی با این تفاوت که بهتره یکم بیشتر به اونها توجه بشه. گزارشهای امنیتی معمولا چنین سطحی دارند.
سطح بعدی warning هست. گزارشهایی که این سطح رو دارند، در مورد یه موضوعی اخطار میدن که ممکنه در آینده موجب مشکل یا تشدید کننده اون باشه.
از اینجا به بعد، گزارشها نشون دهنده یه مشکل هستند.
گزارشهایی که سطح error دارند، یه خطا توی سیستم رو گزارش میدن. مثلا اینکه firmware مورد نیاز یه سختافزاری موجود نیست.
یا مثلا درایور خواسته کاری انجام بده ولی سختافزار مطابق انتظار عمل نکرده.
چنین خطاهایی نشون دهنده مشکل هستند ولی معمولا مشکل انقدر جدی نیست که سیستم رو از کار بندازه.
سطح بعدی، critical هست. این گزارشها تقریبا مثل گزارشهای error هستند ولی عاملی که اونها رو ایجاد کرده، احتمال داره مشکلات دیگهای هم ایجاد کنه.
سطح بعدی، alert هست. اگه گزارشی با این سطح بیاد، کاربر باید سریع واکنش بده که چی گفته و کار مناسب رو انجام بده.
سطح آخر, emergency هست. متاسفانه اگه گزارشی با این سطح بیاد، یه مشکل جدی پیش اومده و دیگه سیستم از کار افتاده. بدون راهاندازی مجدد نمیتونید کار زیادی انجام بدید.
مثلا اگه کرنل به یه دلیلی panic کنه.
خیلی چیزهای دیگهای هم در مورد هست که میتونید با خوندن صفحه man مربوط به dmesg یاد بگیرید.