Sunday 28 November 2010

Kinect driver for PlayStation 3

Well last weekend i bought a Microsoft Kinect device, today i had free time to make things happens...

First PlayStation 3 only see a NUIMOTOR device. After NUIMOTOR is correctly initialized, NUICAMERA and NUIAUDIO are shown and i can detect and control them, OpenKinect documentation about devices and protocols was very helpfull.

NUICAMERA has 2 isoc endpoints one for rgb and other for depth. Stuff is similar to my old eyetoy driver isoc frames and then parsing them to get real frames for user process and i believe that i can use my old eyetoy code with this.

Now i need only TIME to play with the new toy.....

Output from ugly and unfinished kinect sample driver:


PS3Load v0.1
Waiting for connection...
Receiving data... (0x0000cd83/0x0003da11)
Receiving arguments... 0x0000000d
Launching...
Sample Kinect Driver for PlayStation 3 Antonio José Ramos Márquez aka bigboss
Registering kinect driver return 0
kinect_probe:: dev_id=11
USB device probe for kinect getting device descriptor
Usb device found has idVendor 5e04
New usb device found has NUI_MOTOR idProduct b002
kinect_attach:: dev_id=11
Getting device descriptor
nuimotor_attach:: dev_id=11
Kinect NUI_MOTOR detected
Getting configuration descriptor
Number of interfaces 1
Getting interface descriptor
Verifying number of endpoints
Getting control endpoint descriptor for NUI_MOTOR 0
tryng to open control endpoint 0
nuimotor_control_transfer:: param0=0 param1=1
Set Configuration (bConfigurationValue=1)
nuimotor_control_done:: result=0x0 count=0 arg=0
nuimotor_control_transfer:: param0=1 param1=0
Set Interface (bInterfaceNumber=0, bAlternateSetting=0)
nuimotor_control_done:: result=0x50 count=0 arg=1
result=0x50 count=0 arg=1
nuimotor_control_transfer:: param0=2 param1=0
Sending event NUIMOTOR_READY
Received event NUIMOTOR_READY now it's time to angle and led settings
nuimotor_control_transfer:: param0=3 param1=0
init motor
nuimotor_control_done:: result=0x0 count=1 arg=3
nuimotor_control_transfer:: param0=4 param1=0
set angle
nuimotor_control_done:: result=0x0 count=0 arg=4
nuimotor_control_transfer:: param0=5 param1=0
set led
nuimotor_control_done:: result=0x0 count=0 arg=5
nuimotor_control_transfer:: param0=6 param1=0
motor ready time to camera and audio sending NUIMOTOR_ENABLED
Nuimotor initialized set angle and led to red done tryng to see if other devices are already availables
kinect_probe:: dev_id=12
USB device probe for kinect getting device descriptor
Usb device found has idVendor 5e04
New usb device found has NUI_AUDIO idProduct ad02
kinect_attach:: dev_id=12
Getting device descriptor
nuiaudio_attach:: dev_id=12
Kinect NUI_AUDIO detected
Getting configuration descriptor
Verifying number of endpoints 4
Getting control endpoint descriptor for NUI_AUDIO 1
nuiaudio_control_transfer:: param0=0 param1=1
Set Configuration (bConfigurationValue=1)
nuiaudio_control_done:: result=0x0 count=0 arg=0
nuiaudio_control_transfer:: param0=1 param1=0
Set Interface (bInterfaceNumber=0, bAlternateSetting=0)
nuiaudio_control_done:: result=0x50 count=0 arg=1
result=0x50 count=0 arg=1
nuiaudio_control_transfer:: param0=2 param1=0
Sending event NUIAUDIO_READY
Received event NUIAUDIO_READY TODO audio initialization and isoc stuff
kinect_probe:: dev_id=13
USB device probe for kinect getting device descriptor
Usb device found has idVendor 5e04
New usb device found has NUI_CAMERA idProduct ae02
kinect_attach:: dev_id=13
Getting device descriptor
nuicamera_attach:: dev_id=13
Kinect NUI_CAMERA detected
Getting configuration descriptor
Verifying number of endpoints 2
Getting control endpoint descriptor for NUI_CAMERA 2
nuicamera_control_transfer:: param0=0 param1=1
Set Configuration (bConfigurationValue=1)
nuicamera_control_done:: result=0x0 count=0 arg=0
nuicamera_control_transfer:: param0=1 param1=0
Set Interface (bInterfaceNumber=0, bAlternateSetting=0)
nuicamera_control_done:: result=0x50 count=0 arg=1
result=0x50 count=0 arg=1
nuicamera_control_transfer:: param0=2 param1=0
Sending event NUICAMERA_READY
Received event NUICAMERA_READY TODO camera initialization and isoc stuff
kinect_detach:: dev_id=12
nuiaudio_detach:: dev_id=12
Sending event NUIAUDIO_DETACH
kinect_detach:: dev_id=11
nuimotor_detach:: dev_id=11
Sending event NUIMOTOR_DETACH
kinect_detach:: dev_id=13
nuicamera_detach:: dev_id=13
Sending event NUICAMERA_DETACH
Event received NUIAUDIO_DETACH
Event received NUIMOTOR_DETACH
Event received NUICAMERA_DETACH
time to go to XMB and unregister kinect driver...

Sunday 14 November 2010

Work in progress :P

Porting old playstation stuff to PSL1GHT



more to come...

Friday 12 November 2010

PSL1GHT with Eye and EyeToy support

Matthew Parlane(Thank you for your explanation about nfid :P) made the real job, i only add EyeToy support in camera sample.


In the other hand, marcan made kinect open source driver (GRANDE marcan!!!!), ummm a port for PSL1GHT? perhaps i need more free time

you can get my changes at https://github.com/bigboss-ps3dev/PSL1GHT

Monday 8 November 2010

libcairo, thread and mutex support for PSL1GHT

This weekend was fun, making cool things with libcairo and thread.

Now it's time to usb stack and eyetoy and eye things :)

Monday 1 November 2010

Open sdk for Playstation 3 under osx environment

Cool stuff these days:

- AsbestOS from my old friend marcan. Full linux come back to PlayStation 3. Great job marcan !!!

- PSL1GHT an open sdk for homebrew development for PlayStation 3.

Step followed for PSL1GHT under osx snow leopard ( i like to have all playstation (1, 2 and 3) compiling stuff under one environment, instead of playing with multiples virtual machines for that):

- Install fink remember to choose 64 bits installation, it is asked when you are installing fink

- After fink installation install libelf (needed for sprxlinker) and other stuff like wget with sudo fink install wget libelf

- create a directory to clone git repositories with:
mkdir -p /usr/local/ps3dev/git
cd git
git clone git://github.com/HACKERCHANNEL/PSL1GHT
git clone git://github.com/HACKERCHANNEL/ps3chain

- declare environment variables in .profile
PS3DEV=/usr/local/ps3dev;export PS3DEV
PSL1GHT=$PS3DEV/psl1ght;export PSL1GHT
PATH=$PATH:/usr/local/ps2dev/bin:$PS3DEV/bin:$PS3DEV/ppu/bin:$PS3DEV/spu/bin:$PSL1GHT/bin;export PATH
PS3LOAD=tcp:YOURPLAYSTATION3IP;export PS3LOAD

- open a new shell and go to $PS3SDK/git/ps3chain

- for ppu build execute ./buildit.sh ppu

- for spu i got some problems and i solved it declaring first LDFLAGS=-L/sw/lib -L/usr/lib -lintl and CGLAGS=-I/sw/include -I/usr/include
./buildit.sh spu

- compiling psl1ght we get some problems with sprxlinker:
linker.c:1:20: error: libelf.h: No such file or directory

It was solved changing Makefile file in PSL1GHT/psl1ght/tools/sprxlinker/Makefile
change line INCLUDE := .
by
INCLUDE := /sw/include/libelf /sw/include

make
ppu-gcc -Iinclude -c stub/crt0.S -o stub/crt0.o
ppu-gcc -Iinclude -c stub/sprx.S -o stub/sprx.o
ppu-gcc -Iinclude -c stub/crt.c -o stub/crt.o
gcc -O2 -Wall --std=gnu99 raw2h.c -o raw2h
gcc -Wall -Wextra -Os -g -pipe -c -o main.o main.c
main.c: In function ‘main’:
main.c:278: warning: ‘res’ may be used uninitialized in this function
gcc main.o -Wall -Wextra -Os -g -pipe -lz -o ps3load
gcc -L/sw/lib -lelf -O2 -Wall --std=gnu99 -I/sw/include/libelf -I/sw/include linker.c -o sprxlinker
[CC] lv2.c
[AR] libpsl1ght.a
[CC] errno.c
[CC] exit.c
[CC] file.c
[CC] kill.c
[CC] pid.c
[CC] sbrk.c
[CC] sleep.c
[CC] socket.c
[AR] libc-glue-ppu.a
[CC] stub.S
[CC] lib.c
[AR] liblv2.a
[CC] stub.S
[CC] lib.c
[AR] libsysutil.a
[CC] stub.S
[CC] lib.c
[AR] libgcm_sys.a
[CC] stub.S
[CC] lib.c
[AR] libio.a

then make install


Environment ready to have a lot of fun :)

Next step go to samples and compile ps3load , zlib is needed but build.sh included to make zlib.a library must be fixed:
change
CC="ppu-gcc" CFLAGS="-g -O2 -Wall" ./configure --static
by
CC="ppu-gcc" CFLAGS="-g -O2 -Wall" AR="ppu-ar" RANLIB="ppu-ranlib" ./configure --static
then
make
zlib-1.2.5/
zlib-1.2.5/adler32.c
zlib-1.2.5/amiga/
zlib-1.2.5/amiga/Makefile.pup
zlib-1.2.5/amiga/Makefile.sas
zlib-1.2.5/ChangeLog
zlib-1.2.5/CMakeLists.txt
zlib-1.2.5/compress.c
zlib-1.2.5/configure
zlib-1.2.5/contrib/
zlib-1.2.5/contrib/ada/
zlib-1.2.5/contrib/ada/buffer_demo.adb
zlib-1.2.5/contrib/ada/mtest.adb
zlib-1.2.5/contrib/ada/read.adb
zlib-1.2.5/contrib/ada/readme.txt
zlib-1.2.5/contrib/ada/test.adb
zlib-1.2.5/contrib/ada/zlib-streams.adb
zlib-1.2.5/contrib/ada/zlib-streams.ads
zlib-1.2.5/contrib/ada/zlib-thin.adb
zlib-1.2.5/contrib/ada/zlib-thin.ads
zlib-1.2.5/contrib/ada/zlib.adb
zlib-1.2.5/contrib/ada/zlib.ads
zlib-1.2.5/contrib/ada/zlib.gpr
zlib-1.2.5/contrib/amd64/
zlib-1.2.5/contrib/amd64/amd64-match.S
zlib-1.2.5/contrib/asm686/
zlib-1.2.5/contrib/asm686/match.S
zlib-1.2.5/contrib/asm686/README.686
zlib-1.2.5/contrib/blast/
zlib-1.2.5/contrib/blast/blast.c
zlib-1.2.5/contrib/blast/blast.h
zlib-1.2.5/contrib/blast/Makefile
zlib-1.2.5/contrib/blast/README
zlib-1.2.5/contrib/blast/test.pk
zlib-1.2.5/contrib/blast/test.txt
zlib-1.2.5/contrib/delphi/
zlib-1.2.5/contrib/delphi/readme.txt
zlib-1.2.5/contrib/delphi/ZLib.pas
zlib-1.2.5/contrib/delphi/ZLibConst.pas
zlib-1.2.5/contrib/delphi/zlibd32.mak
zlib-1.2.5/contrib/dotzlib/
zlib-1.2.5/contrib/dotzlib/DotZLib/
zlib-1.2.5/contrib/dotzlib/DotZLib/AssemblyInfo.cs
zlib-1.2.5/contrib/dotzlib/DotZLib/ChecksumImpl.cs
zlib-1.2.5/contrib/dotzlib/DotZLib/CircularBuffer.cs
zlib-1.2.5/contrib/dotzlib/DotZLib/CodecBase.cs
zlib-1.2.5/contrib/dotzlib/DotZLib/Deflater.cs
zlib-1.2.5/contrib/dotzlib/DotZLib/DotZLib.cs
zlib-1.2.5/contrib/dotzlib/DotZLib/DotZLib.csproj
zlib-1.2.5/contrib/dotzlib/DotZLib/GZipStream.cs
zlib-1.2.5/contrib/dotzlib/DotZLib/Inflater.cs
zlib-1.2.5/contrib/dotzlib/DotZLib/UnitTests.cs
zlib-1.2.5/contrib/dotzlib/DotZLib.build
zlib-1.2.5/contrib/dotzlib/DotZLib.chm
zlib-1.2.5/contrib/dotzlib/DotZLib.sln
zlib-1.2.5/contrib/dotzlib/LICENSE_1_0.txt
zlib-1.2.5/contrib/dotzlib/readme.txt
zlib-1.2.5/contrib/gcc_gvmat64/
zlib-1.2.5/contrib/gcc_gvmat64/gvmat64.S
zlib-1.2.5/contrib/infback9/
zlib-1.2.5/contrib/infback9/infback9.c
zlib-1.2.5/contrib/infback9/infback9.h
zlib-1.2.5/contrib/infback9/inffix9.h
zlib-1.2.5/contrib/infback9/inflate9.h
zlib-1.2.5/contrib/infback9/inftree9.c
zlib-1.2.5/contrib/infback9/inftree9.h
zlib-1.2.5/contrib/infback9/README
zlib-1.2.5/contrib/inflate86/
zlib-1.2.5/contrib/inflate86/inffas86.c
zlib-1.2.5/contrib/inflate86/inffast.S
zlib-1.2.5/contrib/iostream/
zlib-1.2.5/contrib/iostream/test.cpp
zlib-1.2.5/contrib/iostream/zfstream.cpp
zlib-1.2.5/contrib/iostream/zfstream.h
zlib-1.2.5/contrib/iostream2/
zlib-1.2.5/contrib/iostream2/zstream.h
zlib-1.2.5/contrib/iostream2/zstream_test.cpp
zlib-1.2.5/contrib/iostream3/
zlib-1.2.5/contrib/iostream3/README
zlib-1.2.5/contrib/iostream3/test.cc
zlib-1.2.5/contrib/iostream3/TODO
zlib-1.2.5/contrib/iostream3/zfstream.cc
zlib-1.2.5/contrib/iostream3/zfstream.h
zlib-1.2.5/contrib/masmx64/
zlib-1.2.5/contrib/masmx64/bld_ml64.bat
zlib-1.2.5/contrib/masmx64/gvmat64.asm
zlib-1.2.5/contrib/masmx64/inffas8664.c
zlib-1.2.5/contrib/masmx64/inffasx64.asm
zlib-1.2.5/contrib/masmx64/readme.txt
zlib-1.2.5/contrib/masmx86/
zlib-1.2.5/contrib/masmx86/bld_ml32.bat
zlib-1.2.5/contrib/masmx86/inffas32.asm
zlib-1.2.5/contrib/masmx86/match686.asm
zlib-1.2.5/contrib/masmx86/readme.txt
zlib-1.2.5/contrib/minizip/
zlib-1.2.5/contrib/minizip/crypt.h
zlib-1.2.5/contrib/minizip/ioapi.c
zlib-1.2.5/contrib/minizip/ioapi.h
zlib-1.2.5/contrib/minizip/iowin32.c
zlib-1.2.5/contrib/minizip/iowin32.h
zlib-1.2.5/contrib/minizip/make_vms.com
zlib-1.2.5/contrib/minizip/Makefile
zlib-1.2.5/contrib/minizip/miniunz.c
zlib-1.2.5/contrib/minizip/minizip.c
zlib-1.2.5/contrib/minizip/MiniZip64_Changes.txt
zlib-1.2.5/contrib/minizip/MiniZip64_info.txt
zlib-1.2.5/contrib/minizip/mztools.c
zlib-1.2.5/contrib/minizip/mztools.h
zlib-1.2.5/contrib/minizip/unzip.c
zlib-1.2.5/contrib/minizip/unzip.h
zlib-1.2.5/contrib/minizip/zip.c
zlib-1.2.5/contrib/minizip/zip.h
zlib-1.2.5/contrib/pascal/
zlib-1.2.5/contrib/pascal/example.pas
zlib-1.2.5/contrib/pascal/readme.txt
zlib-1.2.5/contrib/pascal/zlibd32.mak
zlib-1.2.5/contrib/pascal/zlibpas.pas
zlib-1.2.5/contrib/puff/
zlib-1.2.5/contrib/puff/Makefile
zlib-1.2.5/contrib/puff/puff.c
zlib-1.2.5/contrib/puff/puff.h
zlib-1.2.5/contrib/puff/README
zlib-1.2.5/contrib/puff/zeros.raw
zlib-1.2.5/contrib/README.contrib
zlib-1.2.5/contrib/testzlib/
zlib-1.2.5/contrib/testzlib/testzlib.c
zlib-1.2.5/contrib/testzlib/testzlib.txt
zlib-1.2.5/contrib/untgz/
zlib-1.2.5/contrib/untgz/Makefile
zlib-1.2.5/contrib/untgz/Makefile.msc
zlib-1.2.5/contrib/untgz/untgz.c
zlib-1.2.5/contrib/vstudio/
zlib-1.2.5/contrib/vstudio/readme.txt
zlib-1.2.5/contrib/vstudio/vc10/
zlib-1.2.5/contrib/vstudio/vc10/miniunz.vcxproj
zlib-1.2.5/contrib/vstudio/vc10/miniunz.vcxproj.filters
zlib-1.2.5/contrib/vstudio/vc10/miniunz.vcxproj.user
zlib-1.2.5/contrib/vstudio/vc10/minizip.vcxproj
zlib-1.2.5/contrib/vstudio/vc10/minizip.vcxproj.filters
zlib-1.2.5/contrib/vstudio/vc10/minizip.vcxproj.user
zlib-1.2.5/contrib/vstudio/vc10/testzlib.vcxproj
zlib-1.2.5/contrib/vstudio/vc10/testzlib.vcxproj.filters
zlib-1.2.5/contrib/vstudio/vc10/testzlib.vcxproj.user
zlib-1.2.5/contrib/vstudio/vc10/testzlibdll.vcxproj
zlib-1.2.5/contrib/vstudio/vc10/testzlibdll.vcxproj.filters
zlib-1.2.5/contrib/vstudio/vc10/testzlibdll.vcxproj.user
zlib-1.2.5/contrib/vstudio/vc10/zlib.rc
zlib-1.2.5/contrib/vstudio/vc10/zlibstat.vcxproj
zlib-1.2.5/contrib/vstudio/vc10/zlibstat.vcxproj.filters
zlib-1.2.5/contrib/vstudio/vc10/zlibstat.vcxproj.user
zlib-1.2.5/contrib/vstudio/vc10/zlibvc.def
zlib-1.2.5/contrib/vstudio/vc10/zlibvc.sln
zlib-1.2.5/contrib/vstudio/vc10/zlibvc.vcxproj
zlib-1.2.5/contrib/vstudio/vc10/zlibvc.vcxproj.filters
zlib-1.2.5/contrib/vstudio/vc10/zlibvc.vcxproj.user
zlib-1.2.5/contrib/vstudio/vc9/
zlib-1.2.5/contrib/vstudio/vc9/miniunz.vcproj
zlib-1.2.5/contrib/vstudio/vc9/minizip.vcproj
zlib-1.2.5/contrib/vstudio/vc9/testzlib.vcproj
zlib-1.2.5/contrib/vstudio/vc9/testzlibdll.vcproj
zlib-1.2.5/contrib/vstudio/vc9/zlib.rc
zlib-1.2.5/contrib/vstudio/vc9/zlibstat.vcproj
zlib-1.2.5/contrib/vstudio/vc9/zlibvc.def
zlib-1.2.5/contrib/vstudio/vc9/zlibvc.sln
zlib-1.2.5/contrib/vstudio/vc9/zlibvc.vcproj
zlib-1.2.5/crc32.c
zlib-1.2.5/crc32.h
zlib-1.2.5/deflate.c
zlib-1.2.5/deflate.h
zlib-1.2.5/doc/
zlib-1.2.5/doc/algorithm.txt
zlib-1.2.5/doc/rfc1950.txt
zlib-1.2.5/doc/rfc1951.txt
zlib-1.2.5/doc/rfc1952.txt
zlib-1.2.5/doc/txtvsbin.txt
zlib-1.2.5/example.c
zlib-1.2.5/examples/
zlib-1.2.5/examples/enough.c
zlib-1.2.5/examples/fitblk.c
zlib-1.2.5/examples/gun.c
zlib-1.2.5/examples/gzappend.c
zlib-1.2.5/examples/gzjoin.c
zlib-1.2.5/examples/gzlog.c
zlib-1.2.5/examples/gzlog.h
zlib-1.2.5/examples/README.examples
zlib-1.2.5/examples/zlib_how.html
zlib-1.2.5/examples/zpipe.c
zlib-1.2.5/examples/zran.c
zlib-1.2.5/FAQ
zlib-1.2.5/gzclose.c
zlib-1.2.5/gzguts.h
zlib-1.2.5/gzlib.c
zlib-1.2.5/gzread.c
zlib-1.2.5/gzwrite.c
zlib-1.2.5/INDEX
zlib-1.2.5/infback.c
zlib-1.2.5/inffast.c
zlib-1.2.5/inffast.h
zlib-1.2.5/inffixed.h
zlib-1.2.5/inflate.c
zlib-1.2.5/inflate.h
zlib-1.2.5/inftrees.c
zlib-1.2.5/inftrees.h
zlib-1.2.5/make_vms.com
zlib-1.2.5/Makefile
zlib-1.2.5/Makefile.in
zlib-1.2.5/minigzip.c
zlib-1.2.5/msdos/
zlib-1.2.5/msdos/Makefile.bor
zlib-1.2.5/msdos/Makefile.dj2
zlib-1.2.5/msdos/Makefile.emx
zlib-1.2.5/msdos/Makefile.msc
zlib-1.2.5/msdos/Makefile.tc
zlib-1.2.5/nintendods/
zlib-1.2.5/nintendods/Makefile
zlib-1.2.5/nintendods/README
zlib-1.2.5/old/
zlib-1.2.5/old/as400/
zlib-1.2.5/old/as400/bndsrc
zlib-1.2.5/old/as400/compile.clp
zlib-1.2.5/old/as400/readme.txt
zlib-1.2.5/old/as400/zlib.inc
zlib-1.2.5/old/descrip.mms
zlib-1.2.5/old/Makefile.riscos
zlib-1.2.5/old/os2/
zlib-1.2.5/old/os2/Makefile.os2
zlib-1.2.5/old/os2/zlib.def
zlib-1.2.5/old/README
zlib-1.2.5/old/visual-basic.txt
zlib-1.2.5/old/visualc6/
zlib-1.2.5/old/visualc6/example.dsp
zlib-1.2.5/old/visualc6/minigzip.dsp
zlib-1.2.5/old/visualc6/README.txt
zlib-1.2.5/old/visualc6/zlib.dsp
zlib-1.2.5/old/visualc6/zlib.dsw
zlib-1.2.5/qnx/
zlib-1.2.5/qnx/package.qpg
zlib-1.2.5/README
zlib-1.2.5/treebuild.xml
zlib-1.2.5/trees.c
zlib-1.2.5/trees.h
zlib-1.2.5/uncompr.c
zlib-1.2.5/watcom/
zlib-1.2.5/watcom/watcom_f.mak
zlib-1.2.5/watcom/watcom_l.mak
zlib-1.2.5/win32/
zlib-1.2.5/win32/DLL_FAQ.txt
zlib-1.2.5/win32/Makefile.bor
zlib-1.2.5/win32/Makefile.emx
zlib-1.2.5/win32/Makefile.gcc
zlib-1.2.5/win32/Makefile.msc
zlib-1.2.5/win32/README-WIN32.txt
zlib-1.2.5/win32/VisualC.txt
zlib-1.2.5/win32/zlib.def
zlib-1.2.5/win32/zlib1.rc
zlib-1.2.5/zconf.h
zlib-1.2.5/zconf.h.cmakein
zlib-1.2.5/zconf.h.in
zlib-1.2.5/zlib.3
zlib-1.2.5/zlib.3.pdf
zlib-1.2.5/zlib.h
zlib-1.2.5/zlib.map
zlib-1.2.5/zlib.pc.in
zlib-1.2.5/zlib2ansi
zlib-1.2.5/zutil.c
zlib-1.2.5/zutil.h
~/Desktop/ps3dev/git/PSL1GHT/samples/ps3load/zlib/zlib-1.2.5 ~/Desktop/ps3dev/git/PSL1GHT/samples/ps3load/zlib
Building static library libz.a version 1.2.5 with ppu-gcc.
Checking for off64_t... No.
Checking for fseeko... Yes.
Checking for unistd.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.
ppu-gcc -g -O2 -Wall -c -o example.o example.c
ppu-gcc -g -O2 -Wall -c -o adler32.o adler32.c
ppu-gcc -g -O2 -Wall -c -o compress.o compress.c
ppu-gcc -g -O2 -Wall -c -o crc32.o crc32.c
ppu-gcc -g -O2 -Wall -c -o deflate.o deflate.c
ppu-gcc -g -O2 -Wall -c -o gzclose.o gzclose.c
ppu-gcc -g -O2 -Wall -c -o gzlib.o gzlib.c
ppu-gcc -g -O2 -Wall -c -o gzread.o gzread.c
ppu-gcc -g -O2 -Wall -c -o gzwrite.o gzwrite.c
ppu-gcc -g -O2 -Wall -c -o infback.o infback.c
ppu-gcc -g -O2 -Wall -c -o inffast.o inffast.c
ppu-gcc -g -O2 -Wall -c -o inflate.o inflate.c
ppu-gcc -g -O2 -Wall -c -o inftrees.o inftrees.c
ppu-gcc -g -O2 -Wall -c -o trees.o trees.c
ppu-gcc -g -O2 -Wall -c -o uncompr.o uncompr.c
ppu-gcc -g -O2 -Wall -c -o zutil.o zutil.c
ppu-ar rc libz.a adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o
ppu-gcc -g -O2 -Wall -o example example.o -L. libz.a
ppu-gcc -g -O2 -Wall -c -o minigzip.o minigzip.c
ppu-gcc -g -O2 -Wall -o minigzip minigzip.o -L. libz.a
~/Desktop/ps3dev/git/PSL1GHT/samples/ps3load/zlib
[CC] main.c
[LD] ps3load.elf


make pkg
make[1]: Nothing to be done for `all'.
make[1]: `/usr/local/ps3dev/git/PSL1GHT/samples/ps3load/ps3load.self' is up to date.
Creating PKG...
[X] Magic: 7f504b47
[X] Type: 00000001
[X] Offset to package info: 000000c0
[ ] unk1: 00000005
[X] Head Size: 00000080
[X] Item Count: 00000004
[X] Package Size: 0000000000057370
[X] Data Offset: 0000000000000140
[X] Data Size: 00000000000571d0
[X] ContentID: 'UP0001-PSL145310_00-0000000000000000'
[X] QA_Digest: 1881D6153B18C66AC23B3219FF03C6E
[X] K Licensee: 00000000000000000000000000000000

- Intall ps3load.pkg in your PlayStation 3
- Run it
- To test compile echoserv and run from your mac
ps3load echoserv.self
ps3load v0.5
coded by dhewg, #wiidev efnet

compressing 339640 bytes... 11.65%
connecting to myplaystationip:4299
sending upload request
sending file size (39567 bytes)
sending data
sending arguments (15 bytes)
done.

- Test from your mac
telnet myplaystationip 2002
Trying myplaystatioip...
Connected to myplaystationip.
Escape character is '^]'.
Welcome to ECHOServer test.
Type exit and hit enter to close app, otherwise type anything you want and hit enter and I will replay it back to you free of charge. :)hola
hola
Connection closed by foreign host.

Cool !!!
- To finish echoserver
telnet myplaystationip 2002
Trying myplaystationip...
Connected to myplaystationip.
Escape character is '^]'.
Welcome to ECHOServer test.
Type exit and hit enter to close app, otherwise type anything you want and hit enter and I will replay it back to you free of charge. :)exit
exit
Connection closed by foreign host.

And your PlayStation go back to xmb


Nice tools, time to code...