כמה מילים על הדרייבר של nVidia ועל מסכים בעייתיים

Nvidia-logoישנו דרייבר אחד בלינוקס שיש לו היסטוריה ארוכה של בעיות "פוליטיות" והגדרות טכניות – זהו הדרייברים של כרטיסי המסך של nVidia. רבות כבר נכתב על הדרייברים של nVidia, כמה הם סגורים, מורכבים, לא תואמים תמיד, ו"עקשנים" בסירובם לרוץ בסביבות מסויימות.

לאלו החדשים בעולם הלינוקס, אתן היסטוריה קצרה (השאר יכולים לדלג כמה פיסקאות קדימה).

בלינוקס ישנם 2 סוגים של דרייברים לכרטיסים הגרפיים של nVidia ל-PC (ל-ARM זה סיפור אחר לגמרי). ישנו הדרייבר הפתוח בשם Nouveua. זהו דרייבר שנעשה ע"י "הנדסה לאחור" (Reverse Engineering) והוא בקוד פתוח. הדרייבר הזה נותן תמיכה טובה בגרפיקה דו/תלת מימד, וידאו, Boot גרפי ועוד. החל מפברואר חברת nVidia החלה גם לתרום קוד לדרייבר הזה (ולפני כן היא בשקט תרמה כרטיסים חדשים לפני יציאה רשמית כך שכרטיסים חדשים נתמכו ע"י הדרייבר ביום הראשון שהם יצאו לשוק). הדרייבר הזה יכול לשמש משתמשי לינוקס עם 1-2 מסכים בצורה די טובה אבל הוא חלש בביצועים בכל הקשור למשחקים, עריכת וידאו, תוכנות תלת מימד וכו'.

מהצד השני ישנו דרייבר בינארי רשמי של nVidia. הדרייבר הזה תומך בכל תכונה שיש לכרטיסי המסך מבוססי nVidia כולל תמיכה בדברים חדשים כמו Display Port, Thunderbolt (ללא "הכנסה חמה"), כרטיסים מרובים במחשב אחד, SLI, גרפיקה ווידאו מהיר (אותה מהירות כמו Windows). הדרייבר עצמו הוא סגור (הסיבות שהן סגור: הדרייברים של לינוקס, מק ו-Windows משתמשים באותו קוד בסיס ועקב שילוב של קוד מגורמים שונים מחוץ ל-nVidia – אין אפשרות לשחרר אותו), מה שגורם לו להיות בעייתי בעולם הלינוקס, עולם שבו גירסת הליבה משתנה תדיר והמשתמש גם יכול לשנות את הגירסה, ומכיוון שרוב הדרייבר הוא מודול ליבה (מפלצתי – 11.3 מגהבייט. שזה פי כמה וכמה יותר מכל מודול בליבה), יש צורך בקימפול מחדש בכל פעם שמשנים קרנל (ב-fedora יש את dkms ו-akmod שמטפלים בכך אוטומטית בעת הפעלת הלינוקס) – כך שמבחינת ביצועים הדרייבר יתן לך תוצאות טובות, אולם הדרך להגיע לשם היא לא תמיד קלה.

אחת הבעיות הגדולות עם הדרייבים הרשמיים של nVidia היא להסתדר עם ציוד בעייתי, וכשאני מדבר על ציוד בעייתי, אני מדבר על ציודים עלומי שם שלא ממש מחזירים מידע שהדרייבר מצפה לקבל. כך לדוגמא, הח"מ משתמש במסך IPS עם רזולוציית 2560X1440 מייצור קוריאני ללא שם (על המסך כתוב CrossOver אולם כשמנסים לקרוא דרך לינוקס וכרטיס המסך את הפרטים של הכרטיס, מקבלים תשובה של QHD270QHD270QHD270 וג'יבריש בכל הקשור לרזולוציות שהמסך תומך). כשהחלק הגרפי (Xorg) בלינוקס עולה, הדרייבר מיד נופל בטענה שהוא לא מכיר את המסך הזה. לעומתו הדרייבר החופשי Nouveau מבין שזהו עוד מסך עלום שם עם רזולוצייה של 2560X1440 והוא פשוט מתעלם ממה שהמסך אומר ומפעיל עליו את הרזולוציה הנ"ל – וזה עובד מצוין, רק שביצועי תלת מימד/משחקים וכו' לא תקבל.

הפתרון עם הדרייבר הסגור לבעיה זו היא לעקוף את המסך הבעייתי (אם יש לך יותר ממסך אחד), אך לפני כן אנו צריכים להבין איך הדרייבר מזהה את המסכים המחוברים אליו.

בעקרון יש מספר סוגי חיבורים שהדרייבר מתייחס אליהם. אני אתעלם כרגע מחיבורים פנימיים (LVDS – זה מתאים למערכות משובצות ומערכות אחרות שאינן חלק מהפוסט הזה) ונתייחס לחיבורים חיצוניים:

  • חיבור VGA נחשב עבור הכרטיס הגרפי כחיבור למסך CRT ישן (כן, מסכי LCD עם חיבור VGA משתמשים במעגלים פנימיים להדמיית מסך אנלוגי) ולפיכך אם תחבר מסך ב-VGA, הדרייבר יציין לעצמו שיש CRT
  • חיבורים כמו DVI, DVI-DL, Thunderbold, DisplayPort, HDMI הם חיבורים דיגיטליים ולפיכך הדרייבר ממפה אותם כחיבורי DFP (ר"ת Digital Flat Panel) ונותן להם מספרים, כך שאם יש לך מסך עם אחד מהחיבורים שציינתי לעיל, הוא ימפה אותם לפי סדר מספרי DFP-0, DFP-1 וכו'. קישוריות כזו כוללת תקשורת דו כיוונית מלאה והמסך נותן הרבה יותר מידע על עצמו לכרטיס המסך. הוא נותן לכרטיס הגרפי פרטים כמו גודל פיזי של הפאנל, כל האזולוציות שהוא תומך בהן, קצבי רענון מסך שהוא תומך בהם, נקודות לאינצ' (ככל שיש יותר נקודות – האותיות יהיו יותר קטנות ולכן אם אתה רואה את הטקסט באותיות מאוד קטנות – כדאי שתעלה את ה-DPI ל-128 לדוגמא במקום 96 שהוא ברירת המחדל), והאם המסך תומך בכיבוי, צריכת חשמל נמוכה ועוד.

לפיכך, אם המסך הבעייתי הוא בחיבור DFP-1 לדוגמא (כמו במקרה שלי), נצטרך להזין לו שורת ModeLine שתגדיר לו את הרזולוציה והרענון בצורה ידנית (כלומר ספציפית) או שנשתמש בקובץ בינארי פשוט ונבקש מהדרייבר שיתייחס לקובץ הבינארי במקום לנסות לקרוא את פרטי המסך. במידה ויש לך מספר מסכים בעייתיים, תוכל להשתמש בקבצים בינאריים שונים שנמצאים באינטרנט או שפשוט תוכל להזין את ה-ModeLine בתוך קובץ etc/xorg.cong/ כפי שזה מופיע ההרחבה בפוסט הזה.

חשוב לזכור: מכיוון שרוב הפצות הלינוקס מפעילות את עצמן במצב גרפי, אם התקנת את הדרייבר הבינארי, סביר להניח שתקבל סמן מהבהב ותו לא. לחץ על מקשים ALT F2 והתחבר כ-root ולאחר מכן הפעל פקודת: telinit 3 כדי שהלינוקס יעבור למצב טקסטואלי. לאחר שהגדרת את השינויים, תוכל לנסות אותם ע"י הפעלת פקודת startx (כדאי למחוק את קבצי var/log/Xorg*log/ לפני כן כדי שאם תהיה תקלה – תוכל לראות בקובץ החדש שנוצר היכן התקלה, סביר להניח שתראה זאת בסוף הקובץ ה-log). לאחר שתצליח להיכנס למצב גרפי, צא ממנו ע"י בחירה ב-logout או בחירת reboot.

עוד עניין חשוב: מחשבים ניידים רבים כיום נמכרים עם 2 מעבדים גרפיים: האחד הוא מה שמגיע במעבד (של אינטל) והשני הוא של nVidia. המעבדים של nVidia במחשבים ניידים כמובן שאינן כמו המעבדים בכרטיסים יעודיים, אבל הם יכולים להאיץ דברים מסויימים שצריך, דברים שהמעבד הגרפי של אינטל אין לו שום סיכוי להאיץ בצורה רצינית. השיטה שהמעבד של nVidia עובד במחשבים ניידים כאלו, הואיל ואין יציאת מסך נפרדת, היא להפנות את פלט הצ'יפ הגרפי – לתוך אזור זכרון שהמעבד הגרפי האינטלי נותן לו. תחשבו על זה כמו מסך ירוק או כחול בסרטים: מצלמים את הסרט עם מסך ירוק או כחול ברקע ולאחר מכן מחליפים את המסך הירוק או הכחול בגרפיקה ממוחשבת.

בלינוקס, בשביל להשתמש בכל הטרראם הזה, יש צורך בדרייבר משולב שנקרא BumbleBee (כן, כמו ההוא מ-Transformers). הדרייבר (הוא לא בדיוק דרייבר, זה יותר ערכת סקריפטים וספריות) לאחר ההתקנה אינו מספיק, ויש לבצע alias או לכתוב 2 שורות סקריפט ב-Bash כדי לגרום לאפליקציות להכיר בצ'יפ של nVidia ולרוץ על אותו צ'יפ גרפי. עוד פרטים בדף הבית של BumbleBee.

אם רוצים ביצועים יותר גבוהים מאותם מחשבים ניידיים ועם הצ'יפ של nVidia, אז תכירו את פרויקט Primus והחבילה primus נמצאת בכל גירסת לינוקס נפוצה. ב-Fedora אפשר להתקין בפשטות עם yum install primus

הרצת אפליקציה עם primus: כל מה שצריך זה לאמר למערכת להשתמש במנוע primus הוא להוסיף את הפרמטרים b primus- כלומר אם אני רוצה להריץ glxgears לדוגמא, אז הפקודה תהיה:

optirun -b primus glxgears

בהצלחה

תכירו: פרויקט ARA

סביר להניח שלרובכם ישנו PC, פלטפורמה שכבר נמצאת בשוק 33 שנה ומסרבת למות. כמובן שעם הזמן פלטפורמת ה-PC השתנתה מקצה אחד לקצה אחר בכל מובן, אך עדיין אחד היתרונות הבולטים ביותר במחשב PC בהשוואה לפתרונות מחשוב אחרים כמו מחשבים ניידים, טאבלטים וכו' – היא החופש להחליט מה תרצה שיהיה במחשבך. חשבו על כך: אם אין לך מספיק משאבים במחשב לעבודות שאתה רוצה לעשות, אתה יכול בקלות להרחיב או לרכוש יותר גירסה יותר גדולה, בין אם זה זכרון, כרטיס גרפי, דיסק קשיח, הרחבות לציודים חדישים, ועד החלפה של לוח האם והמעבד וכל זאת בעבודה די פשוטה שמצריכה מברג פיליפס וקצת זמן…

ניקח לעומת זאת את הטאבלטים והטלפונים החכמים שיש לנו היום ונראה מיד את הבעיה בכל הקשור להרחבה: אין לך הרבה יותר מדי אפשרויות להתרחב. בחלק גדול מהטלפונים תוכל להוסיף כרטיס מיקרו SD (אם כי לא תוכן להתקין עליו אפליקציות, אלא אם תשתמש ב-1001 טריקים). תוכל אולי להחליף לסוללה יותר גדולה (מה שיבטל מיידית את אחריות היצרן אם תבוא לתקן מכשיר כזה) – אבל לא תוכל מעבר לכך לבצע שום שינוי לטובתך. המצלמה מצלמת תמונות באיכות גרועה? רזולוציית המסך נמוכה? כמות הזכרון קטנה? הפתרון היחיד הוא לרכוש מכשיר אחר לחלוטין, ולא מדובר בד"כ בכמה מאות שקלים, כך שזה כרוך בהוצאה ניכרת.

גוגל (באמצעות רכישת מוטורולה ועתה כחטיבה בתוך גוגל לאחר שמוטורולה נמכרה) החליטה לשנות את המפה ולהציע צורה חדשה שיותר מזכירה את הצורה של השינויים ב-PC.

IMG_9815תכירו את פרויקט ARA.

מטרת הפרוייקט היא פשוטה: גוגל בונה כ-3 דגמים של טלפונים (קטן בינוני וגדול) ונותנת את התכנונים לכל חברה שרוצה להשתתף בפרויקט, ובכל טלפון ישנו "עמוד שידרה" ו"צלעות", כאשר בין עמוד השדרה לצלעות נמצאים מגנטים חזקים שתוספים את החלקים.

החברות יכולות ליצור חלקים שונים לפי רצונן, בין אם מדובר בסוללות, מצלמות, רמקולים, מסכים, אמצעי קלט שונים וכו' באלו צבעים וגוונים שתרצה, והמשתמש יוכל לבחור לעצמו את גודל המכשיר ואלו חלקים להזמין.

כך לדוגמא אם תרכוש מכשיר כזה ומחר תרצה סוללה יותר עבה כי הסוללה הרגילה לא מספיקה לך, תוכל להיכנס לאתר גוגל ולהזמין לך. לכשתגיע הסוללה, תוכל ללחוץ מהצד/למטה ולהוציא את הסוללה ולהכניס את החדשה (אגב, המכשיר בנוי כך שהחלפת סוללה תוכל להתבצע כשהמכשיר ממשיך לפעול גם כשהוצאת את הסוללה הקודמת, כמובן לא לאורך זמן). המצלמה אינה איכותית מספיק? יהיו לך מספר אופציות אחרות (גם מיצרנים אחרים) כך שתוכל להזמין דרך האתר את מודול המצלמה, לשלוף את הישנה, להכניס את החדשה, ולהתחיל לצלם ולקבל תמונות איכותיות יותר. רוצה רמקולים יותר חזקים? אותו תהליך.

כל הפרויקט עצמו יוצא מצד גוגל כפתוח לחלוטין לכל חברה. גוגל שחררה אתמול את קבצי ה-CAD עם הסברים ליצרנים שונים וכמובן מידות ודרישות. תהיו בטוחים שכל יצרן מכשיר מבוסס אנדרואיד כבר הוריד את השרטוטים ואני משער שהם כבר מתכננים חלקים שונים. סביר להניח שיהיה לחלקם קצת קשה לקבל את הרעיון החדש (כי עד היום הם מכרו מכשירים שלמים בלבד), אבל מצד שני, זה יכול לתת ליצרני נישה שונים אפשרות למכור חלקים שעד היום המשתמשים לא יכלו להרכיב למכשיר שלהם. תארו לכם את ניקון או קאנון משחררים מצלמה לטלפון כזה? חובבי הצילום שבינינו יעוטו מיד על האתר להזמין.

האם יהיה שווה להזמין מכשיר כזה? זה כמובן תלוי. אם זה "בשביל הדודה", כלומר משתמש שבקושי מבין מה הולך עם המכשיר שלו, אז לא. משתמש כזה אינו צריך מכשיר כזה. לעומת זאת, משתמשים טכניים שמבינים טוב בטכנולוגיה ורוצים להיות מעודכנים – אני בהחלט אמליץ להם לרכוש מכשיר כזה. חישבו על כך: מחר חברה X יוצאת עם מעבד שנותן ביצועים חזקים ואתם מעוניינים באותו מעבד. מה עדיף? להשקיע 4000+ שקל במכשיר חדש או 500 שקל (נניח) במודול עבור הטלפון ARA שלכם?

אני ממתין בשקיקה לראות את תגובת אפל :-)

תכירו את Asus Chromebox

מי שעוקב אחר גוגל רואה בוודאי איך החברה עושה הכל כדי לקדם את הרעיון של הדפדפן שלה ותוכנות לדפדפן שלה.הם לא עוצרים בדפדפן ורינדור HTML5, אלא גם מפתחים תוספות (שאחרים קוראים לזה "ActiveX דור שני" – לכך אתייחס בהזמנות אחרת) ויוצרים פורמט של Package כך שאפליקציה שתכתוב תוכל להפיץ אותה דרך החנות (החנות שודרגה לאחרונה להפיץ גם אפליקציות בתשלום), ולהריץ אותה על דפדפן כרום, על מחשב ChromeBook/ChromeBox עם ChromeOS ובעתיד הקרוב – גם על מכשירי אנדרואיד ו-IOS, כך שעם אפליקציה אחת תוכל "לכבוש" את כל הפלטפורמות. (אגב, במסגרת כנס Build האחרון שנערך זה עתה, הכריזה מיקרוסופט בערך על אותו קונספט – Universal Binaries שיתנו למפתחים לכתוב קוד שירוץ גם על Windows רגיל וגם על Windows Phone).

עד היום מספר חברות הוציאו מחשבים ניידים עם מפרט נמוך מאוד כדי להריץ ChromeOS – אלו כמובן ה-ChromeBooks. ברוב המקרים מדובר על מעבד סלרון, 2 ג'יגהבייט זכרון ו-16 ג'יגהבייט אחסון מקומי (חשבון הגוגל Drive שלך מורחב אוטומטית בעוד 100 ג'יגה לאחר ש"תשדך" אותו עם Chromebook). יש כמובן יוצאים מהכלל כמו סמסונג ו-HP שחלק מדגמי המכשירים שלהם כוללים מעבד ARM במקום מעבד אינטלי והם נותנים ביצועים לא רעים אך ביצועי הסוללה שלהם – טובים מאוד. ל-Acer היה דגם (שקשה להשיג אותו כיום) של ChromeBook עם 4 ג'יגה זכרון. הדגם הישן יותר דווקא פופולרי כי ניתן להחליף ולשדרג שם זכרון/SSD.

ב-Asus לקחו את הזמן לראות איך השוק מגיב לכל עניין ה-ChromeOS ולאחר שראו שהמכירות של המתחרים בתחום אינם רעים, הם החליטו להיכנס, אם כי לא עם ChromeBook אלא ChromeBox (אני מאמין שזה היה עניין של שכנוע מצד גוגל. אחרי הכל, אסוס וגוגל שותפים ותיקים בפיתוח ויצור מכשירים כמו הנקסוס 7).

באסוס החליטו לתכנן מכשיר asus-chromebox-frontחדש במקום "לגייר" מכשיר Windows שיעבוד עם ChromeOS (כמו במקרה של הטרנספורמר שהועתק בשלמותו מאנדרואיד לפלטפורמת ה-Windows של אסוס). באסוס הפעם ניסו לחשוב מה המשתמש רוצה, ולא רק לזרוק לתוך הקופסא מפרט ישן ולמכור בזול.

הפעם, לשם שינוי, אסוס ממש תכננו בצורה חכמה את המכשיר. כך לדוגמא המכשיר כולל 4 יציאות USB-3 (ולא יציאות USB-2 עם איזו יציאה אחת שהיא USB-3), יש קורא כרטיסים, יש יציאת Display Port וגם יציאת HDMI. גם חיבורי הרשת לא הוזנחו ויש כניסת ג'יגהביט לרשת חוטית וכמובן Wifi עם תמיכה לתקן  N (כולל Dual Band) ו-Bluetooth 4 ולא שכחו את ה-Kensington Lock, כך שתוכל לנעול את המכשיר שלא יגנב. המעבד (בגירסת ה-179$ – שזהו מחירו הרשמי) הוא אמנם Celeron אך הוא מסידרת Haswell, כלומר במקרים שהוא ממש מתאמץ, הוא צורך בערך 11.2 וואט, כך שישנו אספקט של חסכון נחמד בחשמל.

אסוס תמכור את המכשיר הזה ב-3 גרסאות: גירסה עם סלרון במחיר 179$, גירסה עם מעבד i5 וגם גירסה עם מעבד i7 (כאשר גרסאות i5, i7 עדיין אינן זמינות בשוק ולמען האמת – המחירים שמדברים עליהם – יקרים מאוד).

אז יש לנו כאן מכשיר ChromeBox במחיר זול מאוד עם מפרט טכני מרשים.

אבל הדבר הכי מרשים הוא שהמכשיר בעצם "פתוח". מה זה אומר? ש-ASUS לא תבטל אחריות אם תפתחו את המכשיר ותשדרגו אותו, וכאן נמצא אחד היתרונות הגדולים של ה-ChromeBox הנ"ל: אפשר להרחיב את הזכרון עד ל–16 ג'יגהבייט זכרון ואת ה-SSD הפנימי ניתן להחליף עד לגודל של 1 טרהבייט (סמסונג הוציאה כזה)

אז ה-ChromeBox של ASUS נותן לנו אפשרות להרחיב את הזכרון ואת הדיסק לכמות מכובדת. האם זה ישנה משהו ל-ChromeOS? אם תרחיבו מ-2 ל-4 ג'יגהבייט של RAM, בהחלט יהיו שיפורים אך מעבר לכך – לא ממש. מה שכן, אפשר להפוך את ה-ChromeBox למכונת לינוקס נחמדה (ע"י התקנה של Cruton או Chrubunto – תוכלו לראות עוד פרטים כאן) ובכך המכשיר הנחמד יכול להיות גם מכונת לינוקס וגם מכונת ChromeOS עם מפרט טכני נאה וכל זאת במחיר ממש זול.

ChromeOS יכול לשמש למשתמשי קצה כמערכת קלה עם אפס תקלות, מערכת שניתן להבריג עם חיבור VESA כמעט לכל מוניטור, כך שאפשר להתקין זאת בחדר הילדים שישחקו או שיגלשו באתרים המועדפים אליהם מבלי לרכוש PC שמצריך תחזוקה שוטפת הן מבחינת תוכנה והן מבחינת חומרה. המערכת גם יכולה לשמש כמכשיר מעולה עבור "קיוסקים" – עמדות מידע כך שהמשתמש לא צריך לבצע login ולא צריך לדאוג לגבי וירוסים/תולעים וכו'.

הערה מקומית לסיום: כן, בישראל ל-ASUS יש תמיכה מתחת לכל ביקורת ושרות על הפרצוף בכל הקשור לתקלות, קחו את זה בחשבון לפני שאתם מזמינים מכשיר (אינני יודע אם הוא ימכר בארץ או לא). אישית אני הזמנתי בשבוע שעבר את ה-ChromeBox לצרכי בדיקה של ChromeOS (וגם לבצע לו Dual Boot ל-Fedora a שישמש אותי בתור התחנה הקבועה שלי. בין כה עבודות כבדות ירוצו על המכונות האחרות שיש לי כאן בבית) ואם תהיה לי תקלה, אני אעדיף להזמין חלקים מאשר לסמוך על השרות בארץ.