Share
Embed
Porting PicoRuby to Another Microcontroller: ESP32
RubyKaigi 2025 Day.3
https://rubykaigi.org/2025/presentations/Y_uuu.html#day3
Y_uuu
April 18, 2025
Transcript
113 slides
-
self.inspect w :VIFJ0LB[BLJ w !:@VVV 9 !ZVVVOFU #MVF4LZ w
!ZVVV (JU)VC w *P5$MPVE&OHJOFFSBU'VTJD$P -UE w .FOUFSBU'KPSE#PPU$BNQ 2 -
Question: Do we need a Raspberry Pi Pico to try
PicoRuby? 7 -
Question: Do we need a Raspberry Pi Pico to try
PicoRuby? w /PUOFDFTTBSJMZ 8 -
PicoRuby is portable w *UJTCVJMUUPTVQQPSUPQFSBUJPOPOEJ ff FSFOUNJDSPDPOUSPMMFST w 'JMFTBOEEJSFDUPSJFTBSFFYQMJDJUMZTFQBSBUFEUPIBOEMF NJDSPDPOUSPMMFSTQFDJ
fi DEJ ff FSFODFT w &BTZQPSUJOHBMMPXTUIFFYJTUJOHFDPTZTUFNUPCFMFWFSBHFEBDSPTT EJ ff FSFOUNJDSPDPOUSPMMFST 9 -
Porting PicoRuby is still a work in progress w 5IFSFBSFOPUNBOZ
NJDSPDPOUSPMMFSTUIBUDBO FBTJMZSVO1JDP3VCZ w 5IFDSFBUPSPG1JDP3VCZJT BMTPFBHFSUPTFFNPSFQPSUT 10 IUUQTQJDPSVCZHJUIVCJPDPOUSJCVUJPOIUNM -
Porting PicoRuby is still a work in progress w 5IFSFBSFOPUNBOZ
NJDSPDPOUSPMMFSTUIBUDBO FBTJMZSVO1JDP3VCZ w 5IFDSFBUPSPG1JDP3VCZJT BMTPFBHFSUPTFFNPSFQPSUT 11 1PSUJOH "TPG 1JDP3VCZTVQQPSUTPOMZUIF31 3BTQCFSSZ1J1JDP *U XPVMECFBTJHOJ fi DBOUVOEFSUBLJOHUPQPSUJUUPPUIFS.$6TMJLFUIF O3' 45. BOE&41*GZPVBSFJOUFSFTUFEJODPOUSJCVUJOHUPB QPSUJOH QMFBTFWJTJUUIFSFQPTJUPSZ IUUQTQJDPSVCZHJUIVCJPDPOUSJCVUJPOIUNM -
ESP32 w "MPXDPTU MPXQPXFS NJDSPDPOUSPMMFSNPEVMF EFWFMPQFECZ&TQSFTTJG 4ZTUFNT w 8JEFMZVTFEJOWBSJPVT EFWJDFT
JODMVEJOH.4UBDL w 4VQQPSUTXJSFMFTT DPNNVOJDBUJPOTVDIBT8J'J BOE#MVFUPPUI 13 -
My device1: M5Stamp C3 Mate w &RVJQQFEXJUI&41$ POFPGUIF&41TFSJFT NJDSPDPOUSPMMFSNPEVMFT
w #BTFEPO3*4$7 BSDIJUFDUVSF w &YUSFNFMZTNBMMBOE B ff PSEBCMF 14 -
ESP-IDF w &41*%'JTBEFWFMPQNFOU GSBNFXPSLGPS&41 QVCMJTIFECZ&TQSFTTJG 4ZTUFNT w #ZGPMMPXJOHUIFP ff
i DJBM EPDVNFOUBUJPOGPSTFUVQ ZPV DBOVTFDPNQJMFST MJOLFST BOEBSDIJWFSTGPSCPUI3*4$ 7BOE9UFOTB 32 IUUQTEPDTFTQSFTTJGDPNQSPKFDUTFTQJEGFOW FTQHFUTUBSUFEMJOVYNBDPTTFUVQIUNM -
Writing build_config w 5IFCVJME@DPO fi HEJSFDUPSZJO 1JDP3VCZDPOUBJOT fi MFTGPS CVJMEJOHPOWBSJPVT
NJDSPDPOUSPMMFSTBOE FOWJSPONFOUT w 5IFTF fi MFTBSFBMTPXSJUUFOJO 3VCZ 33 TLJQQFEʜ -
Writing build_config 34 .3VCZ$SPTT#VJMEOFX FTQ EPcDPOGc DPOGUPPMDIBJO HDD DPOGDDDPNNBOEYUFOTBFTQFMGHDD
DPOGMJOLFSDPNNBOEYUFOTBFTQFMGME DPOGBSDIJWFSDPNNBOEYUFOTBFTQFMGBS DPOGDDIPTU@DPNNBOEHDD DPOGQJDPSVCZ BMMPD@MJCDGBMTF FOE QJDPSVCZCVJME@DPO fi HYUFOTBFTQSC 4FUUJOH6Q$PNQJMFS -JOLFS BOE "SDIJWFS$PNNBOETGPS9UFOTB "EE$POTUBOUTBOE0UIFS0QUJPOT BT/FFEFE -
Writing build_config 35 .3VCZ$SPTT#VJMEOFX FTQ EPcDPOGc DPOGUPPMDIBJO HDD DPOGDDDPNNBOESJTDWFTQFMGHDD
DPOGMJOLFSDPNNBOESJTDWFTQFMGME DPOGBSDIJWFSDPNNBOESJTDWFTQFMGBS DPOGDDIPTU@DPNNBOEHDD DPOGQJDPSVCZ BMMPD@MJCDGBMTF FOE QJDPSVCZCVJME@DPO fi HSJTDWFTQSC -
rake w 4QFDJGZUIFCVJME@DPO fi HOBNFVTJOHUIF.36#:@$0/'*( FOWJSPONFOUWBSJBCMF w #VJMEVTJOHUIFSBLFDPNNBOE 36 GPS9UFOTB
.36#:@$0/'*(YUFOTBFTQSBLF GPS3*4$7 .36#:@$0/'*(SJTDWFTQSBLF -
Steps for Porting 📝 #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU
1PSUBEEJUJPOBMNSCHFNT 38 +VTU5BMLFE -
Creating an ESP-IDF Project w 'PMMPXTUIFTBNFQSPDFEVSF BTEFWFMPQJOHXJUI$ w *OBNFEUIJTQSPKFDU31 &41
42 IUUQTEPDTFTQSFTTJGDPNQSPKFDUTFTQJEGFOWFTQ HFUTUBSUFEMJOVYNBDPTTFUVQIUNMTUBSUBQSPKFDU -
Writing main.c 43 JODMVEFNSCNBJO@UBTLD ʜ 5IJTGVODUJPOJTUIFFOUSZQPJOU WPJEBQQ@NBJO WPJE \
NSCD@JOJU IFBQ@QPPM )&"1@4*;& NSCD@UDC NBJO@UDCNSCD@DSFBUF@UBTL NBJO@UBTL NSCD@TFU@UBTL@OBNF NBJO@UDC NBJO@UBTL NSCD@SVO ^ 31&41NBJONBJOD *OJUJBMJ[BUJPO 1BTTJOHUIF)FBQ .FNPSZ"SFB 3VOUIF7. $SFBUFBOFYFDVUJPODPOUFYU DBMMFEBUBTL -
Writing main.c 44 JODMVEFNSCNBJO@UBTLD ʜ 5IJTGVODUJPOJTUIFFOUSZQPJOU WPJEBQQ@NBJO WPJE \
NSCD@JOJU IFBQ@QPPM )&"1@4*;& NSCD@UDC NBJO@UDCNSCD@DSFBUF@UBTL NBJO@UBTL NSCD@TFU@UBTL@OBNF NBJO@UDC NBJO@UBTL NSCD@SVO ^ 31&41NBJONBJOD 8IBUEPUIFTFDPEFTEP -
Binary for the PicoRuby VM 45 QVUT)FMMPXPSME NSCMJCNBJO@UBTLSC JODMVEFTUEJOUI JGEFG@@DQMVTQMVT
FYUFSO FOEJG DPOTUVJOU@UNBJO@UBTL<>\ Y Y Y Y Y Y Y Y Y Y Y YE Y Y YE YC ʜ ^ NSCNBJO@UBTLD QJDPSCD#NBJO@UBTLPNSCNBJO@UBTLDMJCNBJO@UBTLSC *OQVU 0VUQVU -
Writing CMakeLists.txt 46 TFU 1*$036#:@%*3\$0.10/&/5@%*3^QJDPSVCZ TFU -*#.36#:@'*-&\1*$036#:@%*3^CVJMEFTQMJCMJCNSVCZB BEE@QSFCVJMU@MJCSBSZ
MJCNSVCZ\-*#.36#:@'*-&^3&26*3&4\$0.10/&/5@/".&^ UBSHFU@MJOL@MJCSBSJFT \$0.10/&/5@-*#^13*7"5&MJCNSVCZ UBSHFU@JODMVEF@EJSFDUPSJFT \$0.10/&/5@-*#^ 13*7"5& \$0.10/&/5@%*3^QJDPSVCZCVJMESFQPTFTQNSVCZDPNQJMFSJODMVEF \$0.10/&/5@%*3^QJDPSVCZCVJMESFQPTFTQNSVCZDPNQJMFSMJCQSJTNJODMVEF \$0.10/&/5@%*3^QJDPSVCZCVJMEFTQNSCHFNT 31&41DPNQPOFOUTQJDPSVCZFTQ$.BLF-JTUTUYU 3FGFSFODJOHMJCNSVCZB "EEMJCSBSJFTUPMJOL -
Build with idf.py 47 JEGQZCVJME 1SPKFDUCVJMEDPNQMFUF5P fl BTI SVO JEGQZ
fl BTI PS JEGQZQ1035 fl BTI PS QZUIPONFTQUPPMDIJQFTQCCFGPSFEFGBVMU@SFTFUBGUFSIBSE@SFTFUXSJUF@ fl BTI fl BTI@NPEFEJP fl BTI@TJ[F.# fl BTI@GSFRNYCVJMECPPUMPBEFSCPPUMPBEFSCJOYCVJMEQBSUJUJPO@UBCMFQBSUJUJPO UBCMFCJOYCVJME31&41CJOYCVJMETUPSBHFCJO PSGSPNUIF6TFSTZVIFJHIRHJUIVCDPNQJDPSVCZ31&41CVJMEEJSFDUPSZ QZUIPONFTQUPPMDIJQFTQCCFGPSFEFGBVMU@SFTFUBGUFSIBSE@SFTFUXSJUF@ fl BTI! fl BTI@BSHT $PNQMFUF -
Steps for Porting 📝 #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU
1PSUBEEJUJPOBMNSCHFNT 48 +VTU5BMLFE -
Modifying build_config w *O1JDP3VCZ NSCHFNTBSF BEEFEUISPVHICVJME@DPO fi H w "EEQJDPSVCZNBDIJOF
52 .3VCZ$SPTT#VJMEOFX FTQ EPcDPOGc DPOGHFNDPSFlQJDPSVCZNBDIJOF DPOGQJDPSVCZ BMMPD@MJCDGBMTF FOE QJDPSVCZCVJME@DPO fi HYUFOTBFTQSC BOESJTDWFTQSC -
Example implementation of hal_write in machine.c 59 JOU IBM@XSJUF JOUGE
DPOTUWPJE CVG JOUOCZUFT \ UVE@DED@XSJUF CVG OCZUFT JOUMFOUVE@DED@XSJUF@ fl VTI SFUVSOMFO ^ QJDPSVCZNBDIJOFQPSUTSQNBDIJOFD JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT \ TIPVMEXSJUFDPEFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD w 5BLFTUIFGPMMPXJOHBSHVNFOUT w 0VUQVU fi MFEFTDSJQUPS w 0VUQVUEBUB w /VNCFSPGCZUFTUPXSJUF w .VTUSFUVSOUIFOVNCFSPG CZUFTXSJUUFO w )PXTIPVMEJUCFJNQMFNFOUFE -
Example implementation of hal_write in machine.c 60 JOU IBM@XSJUF JOUGE
DPOTUWPJE CVG JOUOCZUFT \ UVE@DED@XSJUF CVG OCZUFT JOUMFOUVE@DED@XSJUF@ fl VTI SFUVSOMFO ^ QJDPSVCZNBDIJOFQPSUTSQNBDIJOFD JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT \ TIPVMEXSJUFDPEFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD w UVE@DED@XSJUF JTBGVODUJPO QSPWJEFECZ5JOZ64# w *UJTOPUJODMVEFEJO&41*%' CZEFGBVMU w *O&41*%' TUEJPIDBOCF VTFE BOETUBOEBSEPVUQVUJT EJSFDUFEUPTFSJBM DPNNVOJDBUJPO -
JODMVEFTUEJPI JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT \ GPS
JOUJJOCZUFTJ \ QVUDIBS DIBS CVG <J> ^ ffl VTI TUEPVU SFUVSOOCZUFT ^ Example implementation of hal_write in machine.c 61 QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD w 6MUJNBUFMZ JUXBT JNQMFNFOUFEBTTIPXOJOUIF DPEFPOUIFSJHIU w )PXFWFS *FODPVOUFSFE TFWFSBMGBJMVSFTBMPOHUIF XBZ w *XJMMFYQMBJOUIFNMBUFS -
w 3FXSJUFPUIFSGVODUJPOTVTJOH UIFTBNFBQQSPBDIBTCFGPSF w .PTUPG1JDP3VCZ`TQPSUJOH XPSLDPOTJTUTPGUIJTQSPDFTT w 0ODFNBDIJOFDJTDPNQMFUF TUBOEBSEJOQVUBOEPVUQVU
XJMMCFBWBJMBCMF 62 Porting other functions TUS D QSJOU1MFBTFFOUFSTPNFUFYUaO XIJMFDaO TUS D*0HFUDI QSJOUD FOE QVUTTUS NSCMJCNBJO@UBTLSC 1MFBTFFOUFSTPNFUFYU )FMMP 3VCZ,BJHJ )FMMP 3VCZ,BJHJ -
Steps for Porting #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU
1PSUBEEJUJPOBMNSCHFNT 63 +VTU5BMLFE -
Writing main_task.rb w 1SFQBSJOHB3VCZQSPHSBNUP MBVODIUIFTIFMM w &YUSBDUPOMZUIFOFDFTTBSZ DPEFGSPNUIF31QSPHSBN 66 SFRVJSFTIFMM
SFRVJSFbNBDIJOF 45%*/*0 45%065*0 CFHJO 45%*/FDIPGBMTF TIFMM4IFMMOFX DMFBOUSVF QVUT4UBSUJOHTIFMMaOaO TIFMMTIPX@MPHP TIFMMTUBSU SFTDVFF QVUT/PUBWBJMBCMF QVUT\FNFTTBHF^ \FDMBTT^ FOE NSCMJCNBJO@UBTLSC -
w NSCHFNTOFFEFEUPFYFDVUFUIFFDIPDPNNBOEJOUIFTIFMM 67 Listing required mrbgems QJDPSVCZTIFMM QJDPSVCZFEJUPS QJDPSVCZTBOECPY QJDPSVCZFOW
QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU QJDPSVCZWGT QJDPSVCZNFUBQSPH QJDPSVCZUJNFDMBTT QJDPSVCZNBDIJOF -
w 4PNFNSCHFNTDPOUBJOPOMZ3VCZ fi MFT OPQPSUJOHOFFEFE 68 Listing required mrbgems ✅QJDPSVCZTIFMM
✅QJDPSVCZFEJUPS QJDPSVCZTBOECPY QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT QJDPSVCZNFUBQSPH QJDPSVCZUJNFDMBTT QJDPSVCZNBDIJOF -
w 4PNFNSCHFNTEPOPUIBWFBQPSUEJSFDUPSZ OPQPSUJOHOFFEFE 69 Listing required mrbgems ✅QJDPSVCZTIFMM ✅QJDPSVCZFEJUPS ✅QJDPSVCZTBOECPY
QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT ✅QJDPSVCZNFUBQSPH ✅QJDPSVCZUJNFDMBTT QJDPSVCZNBDIJOF -
w *IBWFBMSFBEZDPNQMFUFEQPSUJOHQJDPSVCZNBDIJOF w 70 Listing required mrbgems ✅QJDPSVCZTIFMM ✅QJDPSVCZFEJUPS ✅QJDPSVCZTBOECPY
QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT ✅QJDPSVCZNFUBQSPH ✅QJDPSVCZUJNFDMBTT ✅QJDPSVCZNBDIJOF -
w 5IFSFGPSF NSCHFNTTUJMMOFFEUPCFQPSUFE 71 Listing required mrbgems ✅QJDPSVCZTIFMM ✅QJDPSVCZFEJUPS ✅QJDPSVCZTBOECPY
QJDPSVCZFOW QJDPSVCZJPDPOTPMF QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT ✅QJDPSVCZNFUBQSPH ✅QJDPSVCZUJNFDMBTT ✅QJDPSVCZNBDIJOF -
picoruby-env and picoruby-io-console w 5IFTFNSCHFNTSBOPO&41XJUIPVUNPEJ fi DBUJPO VTJOHUIF FYJTUJOH31DPEF w
5IFSFGPSF UIF fi MFTXFSFSFVTFE 72 $PQZEJSFDUPSJFTBOE fi MFT -
picoruby-filesystem-fat w .JTTJOHGVODUJPOTDBVTF MJOLFSFSSPST w 5PQSFWFOUUIJT EF fi OFFNQUZ GVODUJPOTPOMZGPSUIPTF
SFGFSFODFECZPUIFSDPEF 74 JODMVEFMJC ff CTPVSDF ff I 50%0*NQMFNFOUUIJTGVODUJPOMPHJD WPJE '*-&@QIZTJDBM@BEESFTT '*- GQ VJOU@U BEES \ ^ 50%0*NQMFNFOUUIJTGVODUJPOMPHJD JOU '*-&@TFDUPS@TJ[F WPJE \ SFUVSO ^ QJDPSVCZ fi MFTZTUFNGBUQPSUTFTQ fl BTI@EJTLD -
w "MMNSCHFNTBSFSFBEZ👍 75 Listing required mrbgems ✅QJDPSVCZTIFMM ✅QJDPSVCZFEJUPS ✅QJDPSVCZTBOECPY ✅QJDPSVCZFOW
✅QJDPSVCZJPDPOTPMF ✅QJDPSVCZ fi MFTZTUFNGBU ✅QJDPSVCZWGT ✅QJDPSVCZNFUBQSPH ✅QJDPSVCZUJNFDMBTT ✅QJDPSVCZNBDIJOF -
Steps for Porting #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT *NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU
1PSUBEEJUJPOBMNSCHFNT 76 +VTU5BMLFE -
Steps for Porting → Completed 🎉 #VJMEUIF1JDP3VCZTPVSDFUPHFOFSBUFMJCNSVCZB -JOLMJCNSVCZBBOEDPNQMFUFUIFCVJMEQSPDFTT
*NQMFNFOUTVQQPSUGPSTUBOEBSEJOQVUBOEPVUQVU 1PSUBEEJUJPOBMNSCHFNT 77 -
case1: Watchdog Timer Error w 5IFGPMMPXJOHFSSPSPDDVSSFEPOUIFEFWJDF 80 & UBTL@XEU5BTLXBUDIEPHHPUUSJHHFSFE5IFGPMMPXJOHUBTLTVTFSTEJEOPUSFTFUUIFXBUDIEPHJOUJNF
& UBTL@XEU*%-& $16 & UBTL@XEU5BTLTDVSSFOUMZSVOOJOH & UBTL@XEU$16NBJO & UBTL@XEU$16*%-& & UBTL@XEU1SJOU$16 DVSSFOUDPSF CBDLUSBDF -
case1: Watchdog Timer Error w 8IZ8BTUIF8BUDIEPH5JNFS5SJHHFSFE w 1JDP3VCZIBTJUTPXONFDIBOJTNGPSDPOUFYUTXJUDIJOHXJUIJO UIF7.
5$# w 5IJTBMMPXTDPOUFYUTXJUDIJOHSFHBSEMFTTPGUIF04UZQFPS XIFUIFSBO04JTQSFTFOUPOUIFNJDSPDPOUSPMMFS 82 -
case1: Watchdog Timer Error w 6OMFTTUIF3VCZQSPHSBNFYQMJDJUMZJODMVEFTTMFFQ UIF$16 SFNBJOTDPOUJOVPVTMZBDUJWF w "TBSFTVMU
'SFF3504JOUFSQSFUTUIJTBTBSVOBXBZQSPHSBNTJODF UIF$16JTOPUJEMJOH 83 -
case1: Watchdog Timer Error w %FDJEFEUPEJTBCMFUIF 8BUDIEPH5JNFSBTB DPVOUFSNFBTVSF w $POUFYUTXJUDIJOHJT
IBOEMFECZ5$# w 5IFPSJHJOBM31QSPKFDUIBT BEPQUFEUIFTBNFBQQSPBDI 84 JODMVEFNSCNBJO@UBTLD WPJEQJDPSVCZ@FTQ WPJE \ %JTBCMF58%5 FTQ@UBTL@XEU@EFJOJU NSCD@JOJU IFBQ@QPPM )&"1@4*;& ^ 31&41NBJONBJOD TIPVMEDBMMJU -
case 2: “require” Doesn't Work w 8IFOFYFDVUJOHlSFRVJSFzJOB3VCZQSPHSBN UIFGPMMPXJOHFSSPS PDDVST 85
&YDFQUJPO WN@JE VOEF fi OFEMPDBMWBSJBCMFPSNFUIPESFRVJSFGPS0CKFDU /P.FUIPE&SSPS -
case 2: “require” Doesn't Work w QJDPSVCZTIFMMBOEQJDPSVCZ SFRVJSFHFOFSBUF$TPVSDF DPEFEVSJOHUIFCVJME QSPDFTT
w 5IFJOJUJBMJ[BUJPOGVODUJPOT EF fi OFEJOUIFTFTPVSDF fi MFT NVTUCFDBMMFEGSPNUIFNBJO GVODUJPO 86 TUBUJDQJDPHFNTQSFCVJMU@HFNT<>\ \NBDIJOF NBDIJOF NSCD@NBDIJOF@JOJU GBMTF^ \FOW FOW NSCD@FOW@JOJU GBMTF^ \/6-- /6-- /6-- USVF^ TFOUJOFM ^ WPJE QJDPSVCZ@JOJU@SFRVJSF NSCD@WN WN \ ^ QJDPSVCZCVJMEFTQNSCHFNTQJDPHFN@JOJUD -
case 2: “require” Doesn't Work w QJDPSVCZTIFMMBOEQJDPSVCZ SFRVJSFHFOFSBUF$TPVSDF DPEFEVSJOHUIFCVJME QSPDFTT
w 5IFJOJUJBMJ[BUJPOGVODUJPOT EF fi OFEJOUIFTFTPVSDF fi MFT NVTUCFDBMMFEGSPNUIFNBJO GVODUJPO 87 JODMVEFNSCNBJO@UBTLD WPJEBQQ@NBJO WPJE \ EJTBCMF8%5 FTQ@UBTL@XEU@EFJOJU NSCD@JOJU IFBQ@QPPM )&"1@4*;& QJDPSVCZ@JOJU@SFRVJSF WN QJDPSVCZ@JOJU@FYFDVUBCMFT WN NSCD@SVO ^ 31&41NBJONBJOD 4IPVMEDBMMJU -
case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 88 JSC
JSCB JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE -
case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 89 JSC
JSCB JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE 0, -
case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 90 JSC
JSCB JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE /( -
case 3: Stack overflow w 8IFOSVOOJOHB3VCZQSPHSBNJOJSCPSBOZPUIFSTDSJQU UIFTZTUFN TVEEFOMZSFCPPUT 91 JSC
JSCB JSCBNBQ\cJcJ ^FBDIEPcOVNc JSC OVNOVN JSC QVUTOVN JSC FOE &3303 "TUBDLPWFS fl PXJOUBTLNBJOIBTCFFOEFUFDUFE -
case 3: Stack overflow w 'SFF3504TUBSUTUIF BQQ@NBJOUBTLBUCPPU BOE 1JDP3VCZ7.SVOTXJUIJOUIJT UBTL
w #ZEFGBVMU UIFBQQ@NBJOUBTL IBTBTUBDLTJ[FPG CZUFTBMMPDBUFE 92 -
case 3: Stack overflow w 'VODUJPODBMMTBOEMPDBM BVUPNBUJD WBSJBCMFT DPOTVNFTUBDLNFNPSZ w
*GVTBHFFYDFFET CZUFT BTUBDLPWFS fl PXPDDVST 93 -
case 3: Stack overflow w *O&41*%' UIFTUBDLTJ[FPG UIFBQQ@NBJOUBTLDBOCF NPEJ fi
FEWJBDPO fi HVSBUJPO w "EEUIFGPMMPXJOHFOUSZUP TELDPO fi HEFGBVMUTUPDIBOHF UIFTUBDLTJ[F 94 $0/'*(@&41@."*/@5"4,@45"$,@4*;& 31&41TELDPO fi HEFGBVMUT -
case 4: CSI Command Not Working w 31DIFDLTUIFUFSNJOBM FNVMBUPSTUBUFBUTUBSUVQ w
4QFDJ fi DBMMZ JUVTFT$4* $POUSPM4FRVFODF *OUSPEVDFS %43 %FWJDF 4UBUVT3FQPSU GPSUIJT QVSQPTF 95 DMBTT*0 EFGTFMGXBJU@UFSNJOBM UJNFPVU SFT 45%*/SFBE@OPOCMPDL 45%065QSJOUaF<O$4*%43 UJNFPVU UP@JUJNFTEPcJc SFT45%*/SFBE@OPOCMPDL UP@T CSFBLJJGSFTMFOHUI TMFFQ@NT FOE &/7<5&3.>SFTTUBSU@XJUI aF<O BOTJ EVNC FOE QJDPSVCZJPDPOTPMFNSCMJCJPDPOTPMFSC -
case 4: CSI Command Not Working w 31DIFDLTUIFUFSNJOBM FNVMBUPSTUBUFBUTUBSUVQ w
4QFDJ fi DBMMZ JUVTFT$4* $POUSPM4FRVFODF *OUSPEVDFS %43 %FWJDF 4UBUVT3FQPSU GPSUIJT QVSQPTF 96 DMBTT*0 EFGTFMGXBJU@UFSNJOBM UJNFPVU SFT 45%*/SFBE@OPOCMPDL 45%065QSJOUaF<O$4*%43 UJNFPVU UP@JUJNFTEPcJc SFT45%*/SFBE@OPOCMPDL UP@T CSFBLJJGSFTMFOHUI TMFFQ@NT FOE &/7<5&3.>SFTTUBSU@XJUI aF<O BOTJ EVNC FOE QJDPSVCZJPDPOTPMFNSCMJCJPDPOTPMFSC -
case 4: CSI Command Not Working w *GUIFUFSNJOBMFNVMBUPSJT SFBEZ JUTIPVMESFDFJWF
aF<OGSPNTUBOEBSEJOQVU w )PXFWFS BOJTTVFPDDVSSFE XIFSFUIJTJOQVUXBTOPU CFJOHSFBEQSPQFSMZ 97 DMBTT*0 EFGTFMGXBJU@UFSNJOBM UJNFPVU SFT 45%*/SFBE@OPOCMPDL 45%065QSJOUaF<O$4*%43 UJNFPVU UP@JUJNFTEPcJc SFT45%*/SFBE@OPOCMPDL UP@T CSFBLJJGSFTMFOHUI TMFFQ@NT FOE &/7<5&3.>SFTTUBSU@XJUI aF<O BOTJ EVNC FOE QJDPSVCZJPDPOTPMFNSCMJCJPDPOTPMFSC -
case 4: CSI Command Not Working w *G$4*%43GBJMT UIFGBNJMJBS 1JDP3VCZMPHPEPFTOU
BQQFBS w 5IJTJTBTFSJPVTJTTVF😱 98 -
case 4: CSI Command Not Working w 5IFDBVTFXBTUIFJOJUJBMMZ QPSUFEQJDPSVCZNBDIJOF w
"U fi STU *IBEJNQMFNFOUFEJU MJLFUIJT 99 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT \ SFUVSOQSJOUG CVG ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD -
case 4: CSI Command Not Working w $BOZPVTQPUUIFEJ ff FSFODF
100 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT \ SFUVSOQSJOUG CVG ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT \ GPS JOUJJOCZUFTJ \ QVUDIBS DIBS CVG <J> ^ ffl VTI TUEPVU SFUVSOOCZUFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD #FGPSF "GUFS -
case 4: CSI Command Not Working w 5IFDPEFCFGPSFUIF fi YIBE
UXPJTTVFT *UJHOPSFEOCZUFT UIF OVNCFSPGCZUFTUPXSJUF *UEJEOPUDBMM ffl VTI TP UIF$4*DPNNBOENJHIU SFNBJOCV ff FSFEBOEOPU TFOUJNNFEJBUFMZ 101 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT \ SFUVSOQSJOUG CVG ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD -
case 4: CSI Command Not Working w "GUFS fi YJOHQJDPSVCZNBDIJOF
UIF$4*DPNNBOETUBSUFEXPSLJOH QSPQFSMZ 102 JOU IBM@XSJUF JOUGE DPOTUWPJE CVG JOUOCZUFT \ GPS JOUJJOCZUFTJ \ QVUDIBS DIBS CVG <J> ^ ffl VTI TUEPVU SFUVSOOCZUFT ^ QJDPSVCZNBDIJOFQPSUTFTQNBDIJOFD