Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - ironstorm

Pages: [1] 2
1
Angstrom & OpenZaurus / Oe Builder Vmware Player Image
« on: December 05, 2005, 03:02:40 pm »
OE Builder VMware image is a Ubuntu VMware disk image preconfigured to build OE distributions.  It is intended to drastically simplify the compiling of OE distros to running 2 shell scripts and waiting for the build to complete.

Start the VM, login as oe/oe, run ~/oe-configure.sh and then ~/start-opie-image-build.sh to build an opie-image.

This release is designed to run on the free [beer] VMware Player (http://www.vmware.com/products/player/), requires 256MB dedicated to the VM, and about 10GB of disk space to complete a build of opie-image.  Building is time consuming (8+hrs on a fast PC) and should be checked on from time to time...

The set-up assumes it will be running on a Windows host, however with QEMU installed (for QEMU-img tool used to create vmdk) it should be easy enough to get it started under a Linux host.

Image Logon/Password is oe/oe

Download:
http://ewi546.ewi.utwente.nl/OE/vmware-image/ See the release fixes section!

Screenshots:



Release Fixes:
* Unzip the file  [ Invalid Attachment ]  in your oe home directory, this will update the scripts to fix the partition detection problem and also the problem with stale OE.db data (bug #498)

* Some packages didn't get installed, this fixes that problem when oe-configure runs... you need to give the bold answers
Quote
Checking for required Debian Packages ...
Password: oe
Reading package lists... Done

--OUTPUT CUT--

Score is 47

Accept this solution? [Y/n/q/?] n

--OUTPUT CUT--

Score is -1089

Accept this solution? [Y/n/q/?] y

--OUTPUT CUT--

Need to get 20.3MB of archives. After unpacking 54.0MB will be used.
Do you want to continue? [Y/n/?] y

2
Angstrom & OpenZaurus / Vmware Player Oe Build Environment
« on: November 30, 2005, 09:50:14 am »
In June, I put out a QEMU image for building OE ( https://www.oesf.org/forums/index.php?showtopic=13311 ).  

The idea being that one could unzip the image, install the emulator, fire it up and start a  build of OE/OZ by invoking 3 or so quick shell scripts.

The June image has been obsolete since July or so when the devs finally switched over to monotone.

Recently, I picked up on this again and started updating it...  got things going with monotone and ported the set-up to run under VMware Player to try to boost speed.

Last night I managed to complete a build for Collie on this set-up, it still needs some polish.

I'm wondering if there is general interest in this type of roll-your-own set-up...  If so I'll put the effort into cleaning it up for consumption.

Cheers,

-G

3
Angstrom & OpenZaurus / Fun With Shoutcast
« on: November 19, 2005, 03:42:46 am »
I'm running OZ 3.5.4RC...

I've been trying to employ my Z5500 as a shoutcast reciever to pump sound into my stereo.

Unfortunately, the state of shoutcast in OZ is somewhat weak...  That is to say neither XMMS (doesn't recognize streams at all) nor Opie-Player2 (crashes right away) can handle shoutcast streams.

This has forced me to fall back to the console, making use of mpg321...  And while mpg321 recognizes streams and plays them back, it also skips during playback...  I suspect either the Z is too slow or it suffers from the bug described here -> http://angerman.net/articles/jukebox/#mpg321 ...

Are there any other alternatives known to support shoutcast streams?

While we are at it is there any way to script volume changes?  

I used to use aumix in the old days, however trying it now just gives an error (SOUND_MIXER_READ_RECSRC) ...   I thought about trying to script the volume applet, but there is no documentation anywhere for it's support or lack of support for QCOP calls.  

Cheers,

-G

4
5x00 Hardware / Cradle -> Serial Cable Conversion
« on: June 25, 2005, 01:31:32 am »
I took apart (rather roughly) my cradle to extract the sharp I/O connector for the Z...

I'm now at a loss as to what my next steps are in terms of disassemble...

 [ Invalid Attachment ]

Above is what the back side (opposite side of the sync button) looks like, below are the labels and some of my guesses about what is going on...

Code: [Select]
    (6543210987654321)?      Back Shot
 _____||||||||||||||||____   (Sync Button is on the other side)
/ CH1 /(-?)       (+?)\ 1  \
|  16 ||||||||||||||||     |  () indicate are guesses
|R                         |
|L                         |
|/\  [||||||||||||||||||]  |
|Y                         |
|M   CH5                   |
|X                         |
||                         |
|C                         |
|3                         |
----------------------------

The pin out from the board into the plug at the top has 16 pins...
The pin out to the middle socket appears to have 18 lines...
I'm guessing that it is the 16 pins for the Z +2 for power?

Does anyone know for sure?
Should I be creating a new ribbon to run to the middle socket?
Should I take the top plug off and wire what directly to my serial port plug?

I'm trying to working off this: https://www.oesf.org/index.php?title=Serial...-to-Sharp_cable

Cheers,

-G

5
Angstrom & OpenZaurus / Qemu Bitbake Image - Jun 17, 2005
« on: June 17, 2005, 05:45:47 pm »
This image is a working OE build environment inside a QEMU disk image.

Thanks to offroadgeek for hosting:
https://www.oesf.org/howto/downloads/OE-Bit...MU-20050617.zip

Requirements:
- QEMU pc emulator For Windows For Linux
- A PC that can spare 256MB RAM to run the guest image
- A Disk that can spare 6GB+ space
- A day or so to build a Zaurus opie-image
- An SSH client is highly recommended (i.e. PuTTY)

To set-up:
On windows:
- Unzip into the QEMU directory (i.e. C:\Program Files\QEMU)
- start-oe-bitbake-QEMU.bat
- once "login: " appears you can SSH as user/pass: oe/oe
- read the login message / readme file (same file)

Other notes:
I recommend you replace the oe-configure.sh script with the one attached to this posting (i.e. use FileZilla to SFTP it to localhost), but it is not essential if you don't mind setting up the compile output partition yourself.

Compiled Z image output ends up in a deploy subdirectory of oe-build/build...  (do a find ~/oe-build | grep deploy for exact path)

It's slow the first time through (i.e. ~18-24hrs to build everything for opie-image) but at least you can watch it doing it's thing and once built only new/unbuilt packages need to be rebuilt the next run.  I'd be curious to know how fast someone can bitbake opie-image on a Linux host with KQEMU accelerator installed.

Cheers,

-Ironstorm

PS: thanks to those in IRC who help with answers to my silly questions and especially to offroadgeek for hosting.

6
OpenZaurus/Opie/Qtopia / Sd Card Mount Problem + Workaround
« on: June 16, 2005, 01:52:48 am »
I just did a build of OZ the other night:
Linux collie 2.4.18-rmk7-pxa3-embedix #1 Tue, 14 Jun 2005 03:05:30 +0000 armv4l unknown

And when I do a cat /proc/partitions I get:
Quote
major minor  #blocks  name

  60     0     999424 mmcda
  60     1     999392 mmcda1
  60     0     999424 mmcda
  60     1     999392 mmcda1
  60     0     999424 mmcda
.....

Into infinity...  this is a kernel bug...  

I'm not a kernel developer so I hacked a fix into the /etc/sdcontrol script instead....

At line 104 of /etc/sdcontrol edit as follows:
Code: [Select]
       # Read available partitions from /proc/partitions.
        PROC_PARTITIONS=`cat /proc/partitions | head -$(expr $(cat /proc/partitions | head -10 | grep -n " 0 " | head -2 | tail -1 |  cut -d: -f1) - 1)`
        # OK_PARTS="`cat /proc/partitions |awk '{print $4}'| grep mmcd`"
        OK_PARTS="`echo $PROC_PARTITIONS |awk '{print $4}'| grep mmcd`"

        echo $PROC_PARTITIONS |awk '{print $4}'| grep mmcd > "$LOGFILE-part"

Cheers,

-G

7
OpenZaurus/Opie/Qtopia / Kernel Compile Can't Find Arm-linux-gcc-2.95
« on: June 03, 2005, 05:42:43 pm »
Not sure why the kernel compile can't find arm-linux-gcc-2.95... it's there...
Have I misconfigured my local.conf?
Could it be that the build directory is too large a pathname or something?

Help

-Ironstorm

Code: [Select]
bitbake@debian-bitbake:~/bb/build$ bitbake openzaurus-sa
NOTE: Using cache in '/home/bitbake/bb/build/tmp/cache'
NOTE: Parsing finished. 2338 cached, 0 parsed, 48 skipped, 0 masked.
NOTE: build 200506030547: started

OE Build Configuration:
TARGET_ARCH   = "arm"
TARGET_OS     = "linux"
MACHINE       = "collie"
DISTRO        = "openzaurus"
TARGET_FPU    = "soft"

NOTE: package openzaurus-sa-2.4.18-rmk7-pxa3-embedix: started
NOTE: package openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19: task do_fetch: started
NOTE: package openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19: task do_fetch: completed
NOTE: package openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19: task do_compile: started
ERROR: function do_compile failed
ERROR: log data follows (/home/bitbake/bb/build/tmp/work/openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19/temp/log.do_compile.4348)
| NOTE: make EMBEDIXRELEASE=- include/linux/version.h CC=ccache arm-linux-gcc-2.95 LD=arm-linux-ld-2.11.2
| make: `include/linux/version.h' is up to date.
| NOTE: make EMBEDIXRELEASE=- dep CC=ccache arm-linux-gcc-2.95 LD=arm-linux-ld-2.11.2
| rm -f include/asm-arm/arch include/asm-arm/proc
| (cd include/asm-arm; ln -sf arch-sa1100 arch; ln -sf proc-armv proc)
| make[1]: Entering directory `/home/bitbake/bb/build/tmp/work/openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19/linux/arch/arm/tools'
| /home/bitbake/bb/build/tmp/work/openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19/linux/scripts/mkdep -D__KERNEL__ -I/home/bitbake/bb/build/tmp/work/openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -Os -mapcs -fno-strict-aliasing -fno-common -fno-common -pipe -mapcs-32 -march=armv4 -mtune=strongarm1100 -mshort-load-bytes -msoft-float  -- getconstants.c |\
|  sed s,getconstants.o,constants.h, > .depend
| make all
| make[2]: Entering directory `/home/bitbake/bb/build/tmp/work/openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19/linux/arch/arm/tools'
| ccache arm-linux-gcc-2.95 -D__KERNEL__ -I/home/bitbake/bb/build/tmp/work/openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -Os -mapcs -fno-strict-aliasing -fno-common -fno-common -pipe -mapcs-32 -march=armv4 -mtune=strongarm1100 -mshort-load-bytes -msoft-float -S -o constants.h.tmp.1 getconstants.c
| arm-linux-gcc-2.95: No such file or directory
| make[2]: *** [constants.h] Error 1
| make[2]: Leaving directory `/home/bitbake/bb/build/tmp/work/openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19/linux/arch/arm/tools'
| make[1]: *** [dep] Error 2
| make[1]: Leaving directory `/home/bitbake/bb/build/tmp/work/openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19/linux/arch/arm/tools'
| make: *** [archdep] Error 2
| FATAL: oe_runmake failed
NOTE: Task failed:
NOTE: package openzaurus-sa-2.4.18-rmk7-pxa3-embedix-r19: task do_compile: failed
ERROR: TaskFailed event exception, aborting
NOTE: package openzaurus-sa-2.4.18-rmk7-pxa3-embedix: failed
ERROR: Build of openzaurus-sa failed

Code: [Select]
bitbake@debian-bitbake:~/bb/build$ which arm-linux-gcc-2.95
/usr/local/arm/2.95.3/bin/arm-linux-gcc-2.95
bitbake@debian-bitbake:~/bb/build$ export
declare -x BBPATH="/home/bitbake/bb/build:/home/bitbake/bb/openembedded:/usr/local/arm/2.95.3/bin"
declare -x HOME="/home/bitbake"
declare -x LANG="en_CA"
declare -x LANGUAGE="en_CA:en_US:en_GB:en"
declare -x LOGNAME="bitbake"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:"
declare -x MAIL="/var/mail/bitbake"
declare -x OLDPWD="/home/bitbake/bb"
declare -x PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:~/bk_client-1.1:/usr/local/arm/2.95.3/bin"
declare -x PWD="/home/bitbake/bb/build"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.0.101 1038 22"
declare -x SSH_CONNECTION="192.168.0.101 1038 10.0.2.15 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="bitbake"
bitbake@debian-bitbake:~/bb/build$

8
Angstrom & OpenZaurus / Bitbake Scripts...
« on: June 03, 2005, 08:34:43 am »
June 3, 2005...

My rough work towards making a bitbake image on Debian under QEMU...  There is a problem with the compiler path I can't resolve (says it can't find arm-linux-gcc-2.95, but it is in the path)...

I use a build account called "bitbake" w/ sudo permissions to do everything root can.
I put all of my OE "/stuff" in ~/bb

- unzip this file
- grant sudo privledges to your build account
- cut and paste lines from bitbake_install.txt to command prompt
- get path settings from .bashrc add them to your shell, log out and back in, then type "export" to check your paths for PATH and BBPATH
- run refresh_toolchain.sh to get the latest build of bitbake and OE package data

If you are using a collie (5500), you can copy local.conf to ~/bb/build/conf/local.conf, otherwise you'll have to edit ~/bb/build/conf/local.conf as per the docs @ http://oe.handhelds.org/cgi-bin/moin.cgi/GettingStarted

Once your local.conf is done, you can start a build by doing:
cd ~/bb/build
bitbake openzaurus-sa


Let me know how it works/doesn't for you...

Cheers,
-Ironstorm

9
Sharp ROMs / Databook Data Loss Bug (qtopia 2.1.1, Oz3.3.x, ?)
« on: May 30, 2005, 11:31:34 am »
This bug effected used to affect Opie in OZ3.3.x (it may still affect OZ, haven't checked)...  

If your Calendar data file (datebook.xml) gets to be large (i.e. mine is 100K), it can take quite a while for the Calendar application to close if a update was made (i.e. 1m30s).

If while closing, a suspend occurs, your Calendar data will have null characters written into datebook.xml at the point in the file that Calendar was writting to...

When next you open Calendar the data after that point in your Calendar file will not appear in the Calendar app...  

First thing don't panic...  

Calendar overwrites the databook.xml file on exit and only when something has been changed....

So, you can likely still save your data, if you've not changed it or closed the calendar yet...

Here's how:
1. cp ~/Applications/datebook/datebook.xml ~/Applications/datebook/datebook.xml.nulls
-> important if your calendar is still open, you changed something before realizing your data is gone...
2. kill or close Calendar  (kill is probably safer)
3. run check-datebook.sh
-> see attached script file
-> assumes databook.xml is here @ /root/Applications/datebook/datebook.xml
-> you should see "datebook.xml contains null characters and is being cleaned." if corruption has occurred else you will get no output.
4. reopen Calendar check your data is back

If your data is not back, close calendar:
- cp ~/Applications/datebook/datebook.xml.nulls ~/Applications/datebook/datebook.xml
- run check-datebook.sh

If your data is still not back, restore from a previous backup.

Proper Fix
Since I'm not sure if the problem is in the reading of datebook.xml or when the file is given to the XML parser...  My suggestion is to fix it at the reading stage.

To fix it:
- binary read the file by it's size (not as a null terminate string from a text file)
- remove all null characters from the buffer
- plant the cleaned buffer into a string buffer and give it to the XML parser

Alternatively, you could fix writing when a suspend event occurs, but I suspect this could be hard or even impossible (if it's a kernel-level-type problem).

-ironstorm

10
Angstrom & OpenZaurus / Oz Needs To Get Better...
« on: May 26, 2005, 05:17:48 pm »
With little fanfare, last night I somewhat grudgingly flashed over my Zaurus' OZ 3.5.3 w/ the new Qtopia ROM.

I've used OZ since version 3.2 was released. And while it has always seemed better then the Sharp ROM, it has also always seemingly been plagued by release quality problems from an end user perspective (perhaps evidenced by the lack of “stable” release for approaching 2 yrs). More recently with the crippling APM problem, OZ has become almost unbearable as PDA OS.

Perhaps some of the issues surrounding OZ can attributed to a lack articulated requirements for what a PDA should be able to do...   Here, as a single user, is my opinion of what is needed in a PDA OS...

A PDA OS should:
  • Include a notepad
  • Include a calculator
  • Include a clock and be able to keep time (there are something like 25 major time zones in the world, those 25 should be included)
  • Have working power management, so the PDA sleeps when it should and wakes for alarms and can advise users when it needs to be charged
  • Include an address book
  • Include a todo list
  • Include a calendar/appointment book (obliviously this depends on time keeping and power management)
  • The ability to sync PIM data to desktop or back it up to removal media or both
All of the things listed above should work as soon as the device is finished being flashed.  If they don't the OS should not be released; stable, unstable, or otherwise until the offending software is rolled back to a working state again.

The gravy stuff that would be nice to have available either on the ROM or as upgrades (but not necessary for a release) includes:
  • An audio player for MP3s and OGGs
  • An email client
  • A web browser
  • A movie / video player
Typically, the response I've seen in the past is that more developers are needed to make this stuff happen... And they most certainly are needed, but the bar for entry has been and still remains too high in my opinion.

I myself have made a few attempts to lower this bar for both myself and others in the community wishing to have a go at building OZ by cobbling together preconfigured OZ build environments (both in the days of the OpieSDK and more recently w/ BitBake under QEMU) and though I still feel this (or something like a Knoppix CD based build env) would be the best ways to introduce and catalyze interest in the OZ development process, I’m beginning to wane on whether they are doable in a practical sense.

I want to use OZ, I really do…  But it needs to get better…  I welcome comments...

Cheers,

-Ironstorm

11
Angstrom & OpenZaurus / Bitbake On Qemu - Alpha
« on: May 13, 2005, 10:14:03 am »
Lots of people (myself included) have said, I'd love to help make OZ better but don't have the time or know-how to set-up the build environment.

This mini-project attempts to help by making it as easy as running a QEMU virtual machine, logging in and typing 'bitbake oe-image'.

Requirements:
- QEMU  for Windows or Linux

- My Debian BitBake QEMU image (using Azureus):
magnet:?xt=urn:btih:7YPQB3DWM3ARTZE3JL4FMLKL7FT7MT5H
(this file will grow to be ~5.5GB as you build)  Note: This image file will likely be updated/replaced very soon.

- A fast computer would be helpful...

Instructions
- Uncompress the disk image (you can use 7-zip on Windows)
- Start QEMU with using the image file as your -hda
- I used 192MB, but you could proably get away with 96 to 128MB of QEMU RAM
- Optional: use -redir tcp:22::22 with QEMU and then you can ssh to localhost and get into the image using PuTTY, if you have an SSHd running on localhost either turn it off or change the port parameter mapping to something else.
- login with bitbake/bitbake
- edit ~/bb/build/conf/local.conf -> uncomment line TARGET_OS="linux" and save
- cd ~/bb/build
- bitbake oe-image
- in Windows I recommend using task manager to set the QEMU.exe task to low priority, then minimize and check back with QEMU every half an hour to see how it's progressing...  (it takes a long time to initially pull all the bb packages to local cache)

Update - May 30:
Bitbake 1.3.0 requires almost 256MB exactly to work as a build environment...  this is much reduced from the previous 700MB (RAM+SWAP) that was previously required...

Things move much faster when SWAP can be avoided on QEMU...

Hopefully, I'll be able to get a better bitbake image done soon...  just trying a build with the ASSUME_PROVIDES="virtual/gcc-arm-linux-2.95" as per the suggestion in this bug (This bug ( http://bugs.openembedded.org/show_bug.cgi?id=29 ) has kept me from building successfully lately, but hopefully adding), if this succeeds I'll clean and pack this image.

12
Angstrom & OpenZaurus / Canadian Holidays For Datebook
« on: April 19, 2005, 11:12:34 pm »
If you are using Opie 3.5.3, you can use the datebooks new plugin to display holidays...  below is the data file for Canadian holidays.

Note: there is a bug in datebook that will cause the holiday not to turn green if there is another appointment / reminder on that day.

Paste the following into /opt/QtPalmtop/etc/nationaldays/canadian.xml:
Code: [Select]






  
    
    
  



  
    
  



  
    
    
  




  
  
  
  
  





  
    
    
    
  



  
    
    
    
  



  
    
    
    
  






Then configure your datebook to use the nationaldays plugin, tab over the nationaldays config and check Canadian.xml...

-G

13
Angstrom & OpenZaurus / Xmms Loopback File For 3.5.1rc1
« on: November 28, 2004, 09:26:11 pm »
I made a loopback file and stuck XMMS in it (so I can play it off a FAT SD, where my music is) and added some scripts to make it work...  you can get it at my blog ( http://stacktrace.org/ ).  

But one thing I can't figure out is how to get XMMS to disable autopower off, my Z shutsdown even while music is playing...  very annoying...

Anyone have an ideas of how to fix it?

14
Angstrom & OpenZaurus / Anyone got .OGG/MP3 playing on OZ3.5.1?
« on: October 01, 2004, 01:16:20 am »
I installed mediaplayer2, but it does not find media files (a bug regression it seems) and when I do select any audio file to play it immediately segfaults...

Anyone got a working ogg/mp3 player working on 3.5.1?

Cheers,

-G

15
General Discussion / help: term reset
« on: July 13, 2004, 02:57:20 am »
Proably because I'm using OZ 3.3.6pre1, nmixer does not obey the -q command listed in it's man page...

so I've crafted the following to adjust volume
# echo 1 is quite, echo 5 is loud
(echo 1; sleep 1; killall nmixer)| nmixer; clear

when the nmixer gets killed ncurses doesn't fix the screen back properly so listings look as follows:
Code: [Select]
# ls
    Applications                        mp3
                                           Documents                           nano
                                                                                   Natalia-Feb14.txt                   notes
                                                                                                                            Settings                            setvolume.sh
               Tomcat Position Paper Abstract.txt  shopping.txt
                                                               antec-cooler.txt                    systeminfo
                                                                                                             backup.sh                           wifi
                                                                                                                                                     fix-date.sh                         xtc.m3u
                                   #


instead of this:

Code: [Select]
# ls
Applications                        Tomcat Position Paper Abstract.txt  mp3                                 shopping.txt
Documents                           antec-cooler.txt                    nano                                systeminfo
Natalia-Feb14.txt                   backup.sh                           notes                               wifi
Settings                            fix-date.sh                         setvolume.sh                        xtc.m3u
#


Under debian running a `reset` fixes problems coming out of nano, under OZ it doesn't do much of anything, neither does `setterm -reset`

Help....  is there a way to fix this?

-G

Pages: [1] 2