ארכיון תגיות: אנדרויד

צריבה של ROM עבור Galaxy S1 i9000 מלינוקס

בפוסט קודם הסברתי על אודות מחיצות באנדרויד. “הקהילה” קוראת לאסופה של ה־images של המחיצות הללו בתור ROM. אין הרבה הסברים באינטרנט שמסבירים איך לצרוב מכשירי Galaxy S i9000 בעברית בלינוקס. אז – מעכשיו יש.

  1. תורידו את ה־ROM־ים המקוריים של החברה המתאימה לכם. אין בעייה גדולה לשים רום של חברה אחרת. אם זה לא עובד, אפשר לצרוב את המודם המתאים. באתר של iAndroid יש קישורים להורדה: http://iandroid.co.il/forum/viewtopic.php?f=42&t=18962
  2. הקבצים שתורידו הם self extracting exe לחלונות. אצלי wine עשה את מלאכתו נאמנה והקבצים שנוצרו וחתימות ה־MD5 הם (קבצי ה־exe הם ממש ישנים, ייתכן ועכשיו יש קבצים עם חתימה שונה, מה שחושב זה קבצי ה־tar שנוצרים מהם):
    82d5a5fffd1fea566aab7fe39522aa2c  I9000.Cellcom.JIJVG.exe
    0cb6ef26ce3076c5b3ffde7cb2ad2a1a  I9000.Partner.JHJVG.exe
    254ef10b0ddacfeabc44cf547082e856  I9000.Pelephone.JJJVB.exe
    eedb05d074db2026b38c8f00ca18f935  Cellcom.JIJVG.tar
    33535d9aff3e39d04b0cc504ac389b51  Pelephone.JJJVB.tar
    7d593eae36a2d5151e6a84454c739827  Partner.JHJVG.tar
  3. עכשיו צריך לפתוח את אחד הקבצים, בתוך ספרייה חדשה (לדוגמה):
     mkdir open-android-firmware
     cd open-android-firmware
     tar xf ../Cellcom.JIJVG.tar
  4. כדי לצרוב צריך גם קובץ pit שמגדיר את מבנה המחיצות. חיפוש ברשת אחר s1_odin_20100512.pit  תניב קובץ שהתחימה שלו היא 1d927b36d2fa807a22e64fc86b445130
  5. צריך גם קובץ שמגדיר dbdatafs, הוא נקרא גם PDA (אין לי שמץ של מושג מה זה). אותו אפשר להוריד מכאן: http://forum.xda-developers.com/showthread.php?t=2184403 החתימה של מה שהורדתי היא 868b81b9e28d30c82a00038d29e65d8c
  6. הצריבה תיעשה על ידי תוכנה heimdall. היא זמינה מהמאגרים החופשיים של דביאן. להתקנה:
     sudo apt install heimdall-flash
  7. אופציונאלי: אני לא אוהב להשתמש ב־root, ולכן הגדרתי חוק udev שהמכשיר יהיה ניתן לתכנות גם בעזרת המשתמש שלי. צריך רק לדאוג שהמשתמש יהיה תחת הקבוצה plugdev ואז החוק הבא יעבוד (זה גם טוב לעבודה מול adb בתור משתמש רגיל, ולכן מומלץ).השורה אחרונה מתאימה לגלקסי, האחרות לנקסוס וואללה, לא זוכר 🙂
    elcuco@pinky ~ $ cat  /etc/udev/rules.d/51-android.rules 
    SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" 
    SUBSYSTEM=="usb", ATTR{idVendor}=="681c", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
  8. בשלב זה נשים את המכשיר במצב download. תוציאו את המכסה האחורי,ואז תוציאו את הסוללה (פשוט לתת מכה והיא יוצאת). תכניסו מחדש את הסוללה ואז ללחוץ על השילוש הקדוש: מקש הבית, כפתור שמע תחתון וכפתור ההדלקה. על הצג יהיה אנדרויד צהוב.
    המלצה: לא לשים את המכסה אחורי. יהיה יותר קל להוציא את הסוללה ולהתחיל מההתחלה, ואני מבטיח שיהיה צורך בזה 🙂
  9. כעת פשוט מפעילים את הפקודה הבאה (אני שמרתי אותה בתסריט בשם flash-all.sh)
    heimdall flash --repartition  \
       --pit s1_odin_20100512.pit \
       --FACTORYFS factoryfs.rfs  \    
       --CACHE cache.rfs          \
       --DBDATAFS dbdata.rfs      \
       --IBL+PBL boot.bin         \
       --SBL Sbl.bin              \
       --PARAM param.lfs          \
       --KERNEL zImage            \   
       --MODEM modem.bin
  10. זהו. הצריבה לוקחת כמה דקות ואחרי המכשיר עולה כמו חדש.

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

המלצות נוספות:

  1. אל תנסו את זה בחלונות. צריך להשתמש בתוכנה odin שאין לי מושג מה היא עושה מי כתב אותה. זאת הדלפה של מישהו ואני לא סומך על קוד של מישהו אחר במחשב שלי. התוכנות שיש בלינוקס נבדקו והן קוד פתוח, אני סומך עליהן יותר.
  2. תוודאו את החתימות (md5 במיקרה של מה שאני נותן כאן).
  3. כמה שיותר מהר נסו לשים רום אלטרנטיבי. cyanogenmod הוא בסדר גמור. אני חושב ש־Replicant יהיה יותר טוב – אבל לא בדקתי אישית, והוא לא זמין לכל מכשיר.
  4. על מכשיר ישן זה, לא הייתי ממליץ על gapps כלל. אני השתמשתי ב־FDroid והשלמתי כמה תוכנות עם Aptoid. האחרון מפוקפק משהו… אבל זאת פשרה שאני נאלץ לחיות איתה.
  5. כדי להחליף מודם, יש לשים את המכשיר במצב download ולצרוב בעזרת הפקודה הבאה (את המודם צריך לקחת מהרום המתאים):
    heimdall flash --MODEM modem.bin
  6. אם דילגת על השלב של udev פשוט לשים sudo לפני כל פקודה.

שאלות שנותרו לי ללא מענה:

  1. מה התוכן של dbdata.rfs ומה המטרה של המחיצה הזאת.
  2. מה זה param.lfs.

תזכורת: מחיצות באנדרויד

Share Button

מחיצות באנדרואיד

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

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

  1. מחיצת boot. במערכת לינוקס ה־bootloader טוען את הקרנל, שמצידו הוא יעשה mount ל־rootfs ואז יפעיל את ‎/sbin/init . בשנים האחרונות בוני הפצות בונים אל תוך הקרנל initramfs – שהוא rootfs קטן, שממנו עושים pivot_root למערכת האמיתית.
    באנדוירד – ה־rootfs גם בנוי אל תוך הקרנל, אבל אין pivot_root והמערכת של הקרנל היא זאת שזמינה במכשיר. ה־partition הזה הוא למעשה RO, כיוון שב־boot הבא הקרנל יטען את כל המחיצה מחדש. הקרנל כולו יושב במחיצה הזאת. בזמן צריבה היא נקראת kernel, ולא boot, האחרון מכיל bootloader ויש הסברים בנושא בסוף הפוסט.
    דרך אגב – התמונה שאתם רואים באתחול של המכשיר? logo.gif. האניצמיה שאחריה, זה bootanim.
  2. מחיצת system. זאת המערכת של אנדורויד. השכבה הגרפית, וכו’. המחיצה הזאת מכילה גם את כל ה־user space drivers שאנרדרויד משתמשת. אין ממש מודולים, הכל בנוי אל תוך הקרנל. המחיצה הזאת mounted על ידי אחד מתסריטי האתחול אל /system/ בזמן האתחול, במצב RO. אם תשנו את ההרשאות, ותשנו שם קבצים הם ישארו ל־boot הבא, כיוון שהמחיצה הזאת ממופה אל התקן פיזי. במערכות סגורות, ייתכן וה-bootloader יגלה שיש שינוי בחתימה של המחיצה ויסרב לעלות את לינוקס.
  3. מחיצת data. זאת המחיצה שמכילה את ההגדרות של המשתמש, האפליקציות התקנו וכו’. המחיצה הזאת mounted במצב RW. יש ספרייה בעלת הרשאות למשתמש שמתחבר דרך adb במקום /data/local/tmp/.
    כשאתם עושים reset to factory defaults במכשיר, כל מה שעושים הוא לפרמט את המחיצה הזאת.
  4. מחיצת radio. במכשיר יש כמה מעבדים, אחד מהם הוא מעבד עצמאי שמדבר עם המודם. לכל ייצרן יש מודם שונה, אז כדי גוגל יצרו פרוטוקול ו”דרייבר” עבור המערכת הפעלה. היצרן של החומרה צריך לכתוב daemon שמאזין ב־local socket מול המערכת של אנדרואיד ומדבר עם החומרה (המעבד השני). הצד שמדבר מול אנדרואיד תקני ויציב, ומצד שני משתנה בהתאם לחומרה. מילות החיפוש שלכם בגוגל הם rild ו־rilj (המונח האחרון היה בשימוש יותר ב-4.2, עכשיו אני רואה אותו פחות).
    מערכת ההפעלה שמפעילה את המעבד שמדבר מול חומרת הרדיו נמצאת במחיצה הזאת, זאת ה”קושחה” של המודם. שוב, מדובר סה”כ על מערכת הפעלה למעבד armV5 ש”אנדרואיד” טוען בזמן האתחול על המעבד השני (תחשבו משהו בסגנון, grub שטוען את לינוקס).
  5. מחיצת persistent (לא זמינה בכל מכשיר). בעת ייצור של מכשיר צריך לכייל פרמטרים מסויימים יחודיים פר מכשיר. למשל ה־serial number או פרמטרים שיגרמו למודם הספציפי הזה לצריך פחות חשמל (יש הבדלים קטנים שנוצרים כתוצאה מאופן הייצור של המודמים). האתחולים הללו נעשים במפעל ומצריך ציוד מסוייים, וכאשר ניתן לעשות את הכיון בשטח – הוא לוקח זמן. יצרנים שומרים במחיצה זו פרמטרים שמיוצרים פעם אחת במחזור חיים של המכשיר כדי לייעל את זמן האתחול (מאתחלים פעם אחת, שומרים ערכים ופעם הבאה במקום לכייל פשוט כותבים לחומרה את הערכים מהפעם הקודמת).
    המחיצה הזאת mounted R/W אבל רק ל־root יש הרשאות כתיבה אליה. המחיצה הזאת לא מפורמטת בזמן איפוס המכשיר.
  6. מחיצת recovery. מי שהתקין רום של אנדרואיד שיחק עם תוכנה במכשיר שעולה “לפני אנדרואיד”. אז זה לא בדיוק נכון… בסה”כ מדובר על קרנל אחר שב־initramfs שלו יש תוכנה שונה.
    בזמן העלייה של המכשיר, ה־boot loader בוחר איזה קרנל להפעיל בעזרת הכפתורים המוזרים שאתם לוחצים בשניות הראשונות של הפעלת המכשיר.
  7. מחיצת cache. הספרייה הזאת היא לשימוש פנימי של אנדוירד. פעם היא שימשה לשמירה של ה־dalvik cache. אני לא יודע בדיוק מה היא עושה בימינו (אני מניח ש־dart שומר שם את ה־binaries שהוא יוצר מהקוד dalvik שאנחנו מקמפלים באקליפס). כמו כן, בזמן האתחול המערכת בודקת האם קובץ מסויים קיים, ואם כן הוא מפעיל את מערכת ה־recovery (ראו סעיף קודם) כדי לעדכן את המערכת.
    אפשר לפרמט את המחיצה הזאת ללא בעייה, התוכן יתמלא באתחול הבא (האתחול יהיה איטי יותר, כיוון שהוא צריך ליצור את המטמון מחדש).
  8. lk (קיצור של little kernel, לא בדיוק מחיצה). במקביל למערכת ה־recovery ל”אנדרואיד” (במובן הרחב מאוד… בשלב זה אפילו לינוקס לא פועל) יש מערכת אחרת שמאפשרת “לצרוב” את המכשיר. זה האנדרואיד הצהוב הזה שאתם רואים שאתם רואים בזמן download mode. מערכת הפעלה זו היא רביעית שיושבת במכשיר (לינוקס ראשון זה ה־recovery, לינוקס שני זה “אנדרואיד” והמערכת שעובדת במודם). היא יודעת לדבר עם ה־USB וכאשר אתם עושים flash בעזרת heimdell זה כאילו שאתם במכשיר ועשים dd אל תוך מחיצה.
  9. pit – רשימת המחיצות. במחשב נורמאלי, רשימת המחיצות נשמרת בתחילת הדיסק, ואז כדי לשנות מחיצות פשוט מפעילים fdisk שקורא כמה סקטורים בתחילת הדיסק. היצרנים של מכשירי arm החליטו לעשות את זה מסובך. אז כדי לעשות את זה במכשירי Galaxy S i9000 משתמשים ב־heimdell כדי לשלוח אל המכשיר את רשימת המחיצות, הרשימה הזאת כתובה ב־pitt file. אפשר למשוך אותו מהמכשיר בעזרת הפקודה
    heimdall download-pit --output blabla.pit

    אפשר למצוא קבצי pit באינטרנט, חפשו את הקובץ s1_odin_20100512.pit ותוודאו שה־md5sum שלו הוא 1d927b36d2fa807a22e64fc86b445130.

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

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

ההבדל בין מכשירי סמסונג ו”שאר העולם” הוא השימוש בפרוטוקול לא תקני עבור הדברים הנמוכים הללו. בשאר המערכות משתמשים ב־fastboot (פרוקוטול דומה לזה של adb). הקוד זמין ב־lk. זה מה שיש בשימוש במכשירי נקסוס.

עריכה:
העירו לי שכותבים אנדרואיד ולא אנדרויד אז לטובת SEO אני תיקנתי את הפוסט הזה.

Share Button

ביקורת – נקסוס 4

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

מבחינת חומרה:

  1. המכשיר מגיע בלי אוזניות. אם תחברו אליו אוזניות של סמסונג – לא תכלו לשלוט על עוצמת הווליום. כנ״ל עם אוזניות של אפל. הכפתור כדי לענות לשיחה עובד בשני הסטים של האוזניות.
  2. המכשיר מגיע בלי מטען לרכב.
  3. מגיע כבל USB ארוך יחסית (יש!) ולו כזה חיבור לקיר. החיבור לקיר הוא לא מתאים לכל שקע – יש שקעים ישנים שבהם אני לא מצליח להכניס אותו כלל (התקן הישראלי הישן – הוא קצת יותר קטן מהאירופאי).
  4. הוא מרגיש מאוד שביר… אחרי כמה חודשים אני כמעט מרגיש שהמסך רופף טיפה… עוד שנה, אני מתחיל לפחד שהחיבור של ה-USB יתפרק.
  5. הסלולה פנימית, וצריך לפרק את המכשיר כדי להחליף אותה. הברגים הם לא ברגים רגילים (לא שטוח ולא פיליפס) והם בקוטר ממש קטן – אז אני אצתרך לקנות מפתוח מיוחד.
  6. מגנים, מקלדות חיצוניות… כל ה-Accesories.. כמעט ולא קיימים למכשיר ומה שיש יחסית יקר. מגנים שקופים אפשר למצוא… אבל יחסית ביוקר (של אייפון ממש זולים… ייצור המוני…)
  7. הרמקול החיצוני פשוט נשמע רע וצפצפני.
  8. כשאני משתמש באוזניות של סמסונג אנשים מתלוננים שאי אפשר להבין אותי. אני חוזר להשתמש במיקרופון המובנה (בלי אוזניות) ואנשים שומעים אותי. אותו סיפור כשאני משתמש באוזניות של אייפון (האוזניות אמורות להיות טובות… לא?). יש לי זוג אוזניות שלישי שלא שומעים אותי דרכן, הבעייה היא במכשיר.
  9. המסך פשוט… נראה רע. הוא בהיר… אבל ניגודיות הצבעים היא די גרועה. השוותי לגלקסי 4, וגלקסי 3 מיני ומול אייפון 5, וזה פשוט רע. השוואתי מול גלקסי 1 – והפרדת הצבעים של הגלקסי הייתה יותר טובה, פשוט הנקסוס היה בהיר יותר.

מבחינת תוכנה:

  1. מצד אחד מעניין. יש המון מערכות הפעלה אלטרנטיביות, ואם יודעים לכבות את המכשיר אז זה מאוד כיף. ואני לא מדבר רק על מודים של אנדרויד, אלא דברים מוזרים באמת (אובונטו, פיירפוקס, Sailfish – מערכת ההפעלה של Jolla).
  2. מצד שני – כל שאר מערכות ההפעלה פשוט חרא בלבן. לא שוות הפעלה במשך יומיים. תמיד חזרתי אל CyanogenMod או אל Stock/Vanilla.
  3. הרומים של אנדרויד שמסתובבים ברשת – הם לא רעים. כולם עובדים ״חלק״. למעט זה שבכולם המכשיר מתחמם. מאוד. לפעמים מחזיקים את הטלפון בזמן עיון ב-Reddit ואתה מרגיש צריבה קטנה (*).
  4. השימוש ב-GPS פשוט גומר את הסוללה ובמהלך היום המכשיר מתחם כל כך, שהוא מפסיק להיטען. ותוך 20-30 דקות הוא פשוט נכבה (גם כשהוא מחובר לחשמל של האוטו). (**)
  5. הזמן שסוללה מחזיקה הוא בערך 20 שעות כשהיא חדשה. היום היא מחזיקה 16-18 שעות. בדרך כלל פחות.Screenshot_2014-09-16-09-35-00
  6. שימוש בשיתוף אינטרנט גם… גורם להתחממות קשה וגומרת את הסוללה מהר מדי. אפילו ברום הרגיל של KitKat.. המכשיר מתחמם יותר מדי. לא נוח לאחיזה.

אני חזרתי להשתמש ברום הסטוק של גוגל כדי לבדוק לעומק את טענות 3,4. אני צריך לבדוק את זה במשך כמה שבועות…

בקיצור – זהו מכשיר זול. אל תצפו ממנו להרבה. נראה ש-LG עשו את המינימום שהיה אפשר כדי לקבל את החותמת של גוגל/נקסוס. הוא מנסה לגרום לך להרגיש כאילו קנית מכשיר premium אבל בגודרי – קיבלת מכשיר בינוני. אבל מגניב.

לגבי נקסוס 5: ואללה… לא יודע. אולי הוא מכשיר יותר טוב.

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

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

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

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

Share Button

לא לסמוך על מיקרוסופט (היה: כנס דרוידקון ישראל)

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

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

להמשיך לקרוא לא לסמוך על מיקרוסופט (היה: כנס דרוידקון ישראל)

Share Button