sahlberg / libsmb2

SMB2/3 userspace client
Other
322 stars 134 forks source link

libsmb2 PlayStation 3 port (WIP) #155

Closed bucanero closed 4 years ago

bucanero commented 4 years ago

Hello @sahlberg ,

I saw that you recently added a PS2 port for the libsmb2, and since I've been doing some open-source PS3 development lately, I went ahead and tried to port it to ps3 too.

I was able to build the library, but when I tried to test it and connect to a Windows 7 smb share, I've got this error:

Failed to connect to IPC$. Session setup failed with (0xc000000d) STATUS_INVALID_PARAMETER.

I can share my test code, but even a simple test always gives me the same STATUS_INVALID_PARAMETER error, so I think that my changes might have some issues.

If you would be kind to check, here's the changes and makefile I added: https://github.com/bucanero/libsmb2/commit/67f1589d1210b894cdb2cf0f52b30c9164fd95a7

I'd like to find whats the issue here, so your review would be very helpful. Also, any idea or suggestion on the error would be great too.

thanks!

sahlberg commented 4 years ago

Awesome. It would be awesome with PS3, thanks for doing this.

Can you try to connect to a normal share, not IPC$ since it is special? Also, to make sure it is not the picked dialect that is too new for windows 7, can you add : smb2_set_version(smb2, SMB2_VERSION_0302); to make sure we are not trying to use smb3.1.1.

Can you also run a wireshark trace on the windows server and send me the trace? Invalid parameter comes from the server so it might mean that there is something wrong with the PDU we are sending.

bucanero commented 4 years ago

Hello, thanks for your reply! 😄

I tried with a normal share and I had the same error. I didn't specify the version though. I'll re-try by adding the line you suggested.

Here's the basic test function I'm using, so you can also verify that I'm actually doing the right thing:

int smb_basic_test(void)
{
    struct smb2_context *smb2;

    smb2 = smb2_init_context();
    if (smb2 == NULL) {
            dbglogger_log("init context failed.\n");
            return 0;
    }
    dbglogger_log("init context SUCCEEDED.\n");
    sleep(10);

    smb2_set_user(smb2, "User");
    smb2_set_password(smb2, "password");

    if (smb2_connect_share(smb2, "192.168.1.40", "Users", NULL) < 0) {
            dbglogger_log("smb2_connect_share failed. %s\n", smb2_get_error(smb2));
            return 0;
    }

    dbglogger_log("connect SUCCEEDED.\n");

    return 0;
}

The Windows 7 machine is running on 192.168.1.40, and it allows anonymous access (I assume guest and blank password is ok). The shared disk folder is Users.

I'll report my results after I try this version setting. If it gives the same error, I'll try to capture some packets too.

thanks for your help 👍

sahlberg commented 4 years ago

Guest logons are not supported on 3.1.1 and later so you will need this: smb2_set_version(smb2, SMB2_VERSION_0302);

Also remove this line: smb2_set_password(smb2, ""); This line is setting the password to the empty string which is not the same thing as no password. So just drop that line.

sahlberg commented 4 years ago

Oh, actually. I don't think windows7 supports 3.1.1 anyway so you can drop the smb2_set_version(smb2, SMB2_VERSION_0302); line completely.

Try that and send me a trace.

bucanero commented 4 years ago

Alright, I removed the smb2_set_password() line, and also tried with and without smb2_set_version() values.

Without version, or with SMB2_VERSION_0202, SMB2_VERSION_0210:

smb2_connect_share failed. Session setup failed with (0xc000000d) STATUS_INVALID_PARAMETER. 

With v3 version values SMB2_VERSION_0300, SMB2_VERSION_0302:

smb2_connect_share failed. Negotiate failed with (0xc00000bb) SMB2_STATUS_NOT_SUPPORTED.

Second case makes sense because Win7 doesn't support SMBv3 so error response is ok.

I'm attaching the wireshark packet capture from a test without any version setting. (error STATUS_INVALID_PARAMETER) The one thing I noticed, is that instead of sending a user \GUEST, it sent a blank user \, even though my code is using smb2_set_user(smb2, "guest")

Anyways, I'm not an expert on SMB protocols at all, so I'll just leave the capture so you can review it: ps3_smb2.pcapng.gz

sahlberg commented 4 years ago

Thanks.

The lack of the name "guest" is simple to explain. If you don;t have any credentials at all (i.e. no password) then you can't authenticate and a username is just meaningless. That is why no username is passed for "guest"

The actual SessionSetup is successful. so the debug/error output is wrong. SessionSetup completes successfully in frame 16. If you look in that frame in wireshark in SessionFlags, neither Guest or NULL user is set, that is just windows nowadays never bothering to set these flags. Anonymous or NULL user is something that is phased out and won't even work on the latest dialect. (Guest user is when you have a user that can log in without a password. I.e. the client says I want to be guest. That has actually not been a think in SMB for quite a long time. Instead what this is is a NULL user. It basically used to be a fallback to when users tried to login but did not have the proper password, instead of denying them to access the share old windows might give them read-only access as "guest" or "unauthenticated user". This is no longer a think in windows or smb since many years,

A NULL login is when a user does not have any credentials at all and doesn;t even send a username. That is what happens here and is what still works for dialects prior to 3.1.1. It is almost the same as a "guest" user. But it difffers in that this time it is the client that specifies "I don't have proper credentials". The difference is largely a technical detail in the protocol itself and very seldom surfaced in any documentation except from very detailed technical specs. But technically, we are authenticating as a NULL user, not a guest user. )

Can you try accessing the share with a real user and password? I am 100% sure it will not work because the issue is not authentication or session_setup but it never hurts to verify. (for later, if you publish an app, don;t support "guest" logins. They are being deprecated. Just tell all users they MUST provide a valid username and password.)

What I think is the real issue is packet #20. the tree connect. This is the command to map an actual share. The issue is that you don't send an actual share name to the server. In wireshark, at offset 0x4a you have the 2 bytes 0x2B 0x00 that represents the length of the actual string for the share name. The share name is in USC2 unicode format so each character is encoded in 2 bytes, but starting from offset 0x4c into the packet, that is where the share name should be encoded but it is all just 0x00 bytes.

If you take a wireshark trace from a different client to the server you will see what I mean. The actual share name should be encoded here, but it is missing somehow. Or not really missing, it is just zeroed out.

Now the issue is why dues the TreeConnect request packet not contain a share name? I have attached a tiny capture with a tree connect request so you can see what it is supposed to look like. 2 bytes for each character in ucs2.

I hope github will not discard the attachement.

On Thu, Aug 13, 2020 at 10:49 PM Damián Parrino notifications@github.com wrote:

Alright, I removed the smb2_set_password() line, and also tried with and without smb2_set_version() values.

Without version, or with SMB2_VERSION_0202, SMB2_VERSION_0210:

smb2_connect_share failed. Session setup failed with (0xc000000d) STATUS_INVALID_PARAMETER.

With v3 version values SMB2_VERSION_0300, SMB2_VERSION_0302:

smb2_connect_share failed. Negotiate failed with (0xc00000bb) SMB2_STATUS_NOT_SUPPORTED.

Second case makes sense because Win7 doesn't support SMBv3 so error response is ok.

I'm attaching the wireshark packet capture from a test without any version setting. (error STATUS_INVALID_PARAMETER) The one thing I noticed, is that instead of sending a user \GUEST, it sent a blank user \, even though my code is using smb2_set_user(smb2, "guest")

Anyways, I'm not an expert on SMB protocols at all, so I'll just leave the capture so you can review it: ps3_smb2.pcapng.gz https://github.com/sahlberg/libsmb2/files/5069019/ps3_smb2.pcapng.gz

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sahlberg/libsmb2/issues/155#issuecomment-673458222, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADY3EDSS6NJKCDBH6UMWIDSAPOOLANCNFSM4P5NE7UA .

sahlberg commented 4 years ago

Where I would look at the issue would be to start with libsmb2.c line 1042 the asprintf() call where is what creates the \server\share string that should go into the tree-connect call

Or line 1049 in libsmb2.c where we convert it from utf8 into ucs2

Or line 758 where we pass this ucs2 string into the tree-connect request encoder via the req structure pointer.

Or inside the smb2_cmd_tree_connect_async() functions where it is all put together into proper iovectors before sending it out onto the wire.

On Thu, Aug 13, 2020 at 11:24 PM ronnie sahlberg ronniesahlberg@gmail.com wrote:

Thanks.

The lack of the name "guest" is simple to explain. If you don;t have any credentials at all (i.e. no password) then you can't authenticate and a username is just meaningless. That is why no username is passed for "guest"

The actual SessionSetup is successful. so the debug/error output is wrong. SessionSetup completes successfully in frame 16. If you look in that frame in wireshark in SessionFlags, neither Guest or NULL user is set, that is just windows nowadays never bothering to set these flags. Anonymous or NULL user is something that is phased out and won't even work on the latest dialect. (Guest user is when you have a user that can log in without a password. I.e. the client says I want to be guest. That has actually not been a think in SMB for quite a long time. Instead what this is is a NULL user. It basically used to be a fallback to when users tried to login but did not have the proper password, instead of denying them to access the share old windows might give them read-only access as "guest" or "unauthenticated user". This is no longer a think in windows or smb since many years,

A NULL login is when a user does not have any credentials at all and doesn;t even send a username. That is what happens here and is what still works for dialects prior to 3.1.1. It is almost the same as a "guest" user. But it difffers in that this time it is the client that specifies "I don't have proper credentials". The difference is largely a technical detail in the protocol itself and very seldom surfaced in any documentation except from very detailed technical specs. But technically, we are authenticating as a NULL user, not a guest user. )

Can you try accessing the share with a real user and password? I am 100% sure it will not work because the issue is not authentication or session_setup but it never hurts to verify. (for later, if you publish an app, don;t support "guest" logins. They are being deprecated. Just tell all users they MUST provide a valid username and password.)

What I think is the real issue is packet #20. the tree connect. This is the command to map an actual share. The issue is that you don't send an actual share name to the server. In wireshark, at offset 0x4a you have the 2 bytes 0x2B 0x00 that represents the length of the actual string for the share name. The share name is in USC2 unicode format so each character is encoded in 2 bytes, but starting from offset 0x4c into the packet, that is where the share name should be encoded but it is all just 0x00 bytes.

If you take a wireshark trace from a different client to the server you will see what I mean. The actual share name should be encoded here, but it is missing somehow. Or not really missing, it is just zeroed out.

Now the issue is why dues the TreeConnect request packet not contain a share name? I have attached a tiny capture with a tree connect request so you can see what it is supposed to look like. 2 bytes for each character in ucs2.

I hope github will not discard the attachement.

On Thu, Aug 13, 2020 at 10:49 PM Damián Parrino notifications@github.com wrote:

Alright, I removed the smb2_set_password() line, and also tried with and without smb2_set_version() values.

Without version, or with SMB2_VERSION_0202, SMB2_VERSION_0210:

smb2_connect_share failed. Session setup failed with (0xc000000d) STATUS_INVALID_PARAMETER.

With v3 version values SMB2_VERSION_0300, SMB2_VERSION_0302:

smb2_connect_share failed. Negotiate failed with (0xc00000bb) SMB2_STATUS_NOT_SUPPORTED.

Second case makes sense because Win7 doesn't support SMBv3 so error response is ok.

I'm attaching the wireshark packet capture from a test without any version setting. (error STATUS_INVALID_PARAMETER) The one thing I noticed, is that instead of sending a user \GUEST, it sent a blank user \, even though my code is using smb2_set_user(smb2, "guest")

Anyways, I'm not an expert on SMB protocols at all, so I'll just leave the capture so you can review it: ps3_smb2.pcapng.gz https://github.com/sahlberg/libsmb2/files/5069019/ps3_smb2.pcapng.gz

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sahlberg/libsmb2/issues/155#issuecomment-673458222, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADY3EDSS6NJKCDBH6UMWIDSAPOOLANCNFSM4P5NE7UA .

bucanero commented 4 years ago

thanks for the feedback It seems that the attachment got filtered by Github, but in any case, I'll try those checks you suggested on libsmb2.c and see if I can find where the share string gets lost.

I hope I'll get more info after I run these tests

sahlberg commented 4 years ago

Mail me directly at ronniesahlberg@gmail.com and I will send you a trace to show what TreeConnect should look like.

On Fri, Aug 14, 2020 at 12:22 AM Damián Parrino notifications@github.com wrote:

thanks for the feedback It seems that the attachment got filtered by Github, but in any case, I'll try those checks you suggested on libsmb2.c and see if I can find where the share string gets lost.

I hope I'll get more info after I run these tests

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sahlberg commented 4 years ago

I think I found the bug. Can you try the current master branch ? I have pushed a fix in:

commit 0dd5959172c81af25a9d31c6b944b637fbd12716 (HEAD -> master, origin/master) Author: Ronnie Sahlberg ronniesahlberg@gmail.com Date: Fri Aug 14 06:39:32 2020 +1000

unicode: fix byteswapping bug in validate_utf8_str

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>

On Fri, Aug 14, 2020 at 6:29 AM ronnie sahlberg ronniesahlberg@gmail.com wrote:

Mail me directly at ronniesahlberg@gmail.com and I will send you a trace to show what TreeConnect should look like.

On Fri, Aug 14, 2020 at 12:22 AM Damián Parrino notifications@github.com wrote:

thanks for the feedback It seems that the attachment got filtered by Github, but in any case, I'll try those checks you suggested on libsmb2.c and see if I can find where the share string gets lost.

I hope I'll get more info after I run these tests

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

bucanero commented 4 years ago

Great, thanks for looking into it @sahlberg 👍

I can confirm that the change in the 32bits to 16bits endianness fixed the connection issue from the PS3. 😄

Also, I confirm that using the "Guest" user doesn't work with the library. When I tried from my computer with smbutil view -g //192.168.1.40 it did work. But my smb_basic_test() code rejects the connection with:

smb2_connect_share failed. Session setup failed with (0xc0000022) STATUS_ACCESS_DENIED

Now, when using the correct user/password, I've got a valid connection:

[2020-08-13 22:24:09] init context SUCCEEDED.
[2020-08-13 22:24:09] connect SUCCEEDED.

btw, I took the library for a short "test drive", and I was able to enumerate the resources available on the Win7 host:

[2020-08-13 22:24:08] ------ UDP (239.255.0.100:30000) network debug logger initialized -----
[2020-08-13 22:24:09] ADMIN$               Remote Admin        
[2020-08-13 22:24:09]  DISKTREE
[2020-08-13 22:24:09]  HIDDEN
[2020-08-13 22:24:09] 
[2020-08-13 22:24:09] C$                   Default share       
[2020-08-13 22:24:09]  DISKTREE
[2020-08-13 22:24:09]  HIDDEN
[2020-08-13 22:24:09] 
[2020-08-13 22:24:09] IPC$                 Remote IPC          
[2020-08-13 22:24:09]  IPC
[2020-08-13 22:24:09]  HIDDEN
[2020-08-13 22:24:09] 
[2020-08-13 22:24:09] Print to PDF (Mac Desktop) Print to PDF (Mac Desktop)
[2020-08-13 22:24:09]  PRINTQ
[2020-08-13 22:24:09] 
[2020-08-13 22:24:09] print$               Printer Drivers     
[2020-08-13 22:24:09]  DISKTREE
[2020-08-13 22:24:09] 
[2020-08-13 22:24:09] Users                                    
[2020-08-13 22:24:09]  DISKTREE

shall I do a PR to submit my changes and add PlayStation 3 as a supported platform? 😄

thanks again, cheers

sahlberg commented 4 years ago

That is awesome news!. I am really excited that we can get smb2/3 support for ps3 homebrew. Maybe you can encourage the devs of the various file managers, such as multiman, to add smb2/3 support?

For guest access, I wouldn't bother trying to fix it. It is a feature that is on its way out, and it can not even ever work on the latest dialects such as smb3.1.1. (In smb3.1.1 all TreeConnect calls MUST always be either signed or encrypted, both of which are features that require a session key which are only available when you authenticate with credentials.)

Can you test if signing works too and encryption? smb2_set_sign() and smb2_set_seal() can be used to fors signing and encryption.

The former is important on modern windows servers since they are moving towards making sign or seal mandatory. Domain Controllers already come preconfigure to refuse client connections that are neither signed or sealed. Azure requires encryption/seal for all remote connections.

On Fri, Aug 14, 2020 at 8:56 AM Damián Parrino notifications@github.com wrote:

Great, thanks for looking into it @sahlberg https://github.com/sahlberg 👍

I can confirm that the change in the 32bits to 16bits endianness fixed the connection issue from the PS3. 😄

Also, I confirm that using the "Guest" user doesn't work with the library. When I tried from my computer with smbutil view -g //192.168.1.40 it did work. But my smb_basic_test() code rejects the connection with:

smb2_connect_share failed. Session setup failed with (0xc0000022) STATUS_ACCESS_DENIED

Now, when using the correct user/password, I've got a valid connection:

[2020-08-13 22:24:09] init context SUCCEEDED.

[2020-08-13 22:24:09] connect SUCCEEDED.

btw, I took the library for a short "test drive", and I was able to enumerate the resources available on the Win7 host:

[2020-08-13 22:24:08] ------ UDP (239.255.0.100:30000) network debug logger initialized -----

[2020-08-13 22:24:09] ADMIN$ Remote Admin

[2020-08-13 22:24:09] DISKTREE

[2020-08-13 22:24:09] HIDDEN

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] C$ Default share

[2020-08-13 22:24:09] DISKTREE

[2020-08-13 22:24:09] HIDDEN

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] IPC$ Remote IPC

[2020-08-13 22:24:09] IPC

[2020-08-13 22:24:09] HIDDEN

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] Print to PDF (Mac Desktop) Print to PDF (Mac Desktop)

[2020-08-13 22:24:09] PRINTQ

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] print$ Printer Drivers

[2020-08-13 22:24:09] DISKTREE

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] Users

[2020-08-13 22:24:09] DISKTREE

shall I do a PR to submit my changes and add PlayStation 3 as a supported platform?

thanks again, cheers

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sahlberg/libsmb2/issues/155#issuecomment-673749710, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADY3EEP4BEBSD4YEYETSZDSARVTRANCNFSM4P5NE7UA .

sahlberg commented 4 years ago

On Fri, Aug 14, 2020 at 10:31 AM ronnie sahlberg ronniesahlberg@gmail.com wrote:

That is awesome news!. I am really excited that we can get smb2/3 support for ps3 homebrew. Maybe you can encourage the devs of the various file managers, such as multiman, to add smb2/3 support?

For guest access, I wouldn't bother trying to fix it. It is a feature that is on its way out, and it can not even ever work on the latest dialects such as smb3.1.1. (In smb3.1.1 all TreeConnect calls MUST always be either signed or encrypted, both of which are features that require a session key which are only available when you authenticate with credentials.)

Can you test if signing works too and encryption? smb2_set_sign() and smb2_set_seal() can be used to fors signing and encryption.

The former is important on modern windows servers since they are moving towards making sign or seal mandatory. Domain Controllers already come preconfigure to refuse client connections that are neither signed or sealed. Azure requires encryption/seal for all remote connections.

Signing should work on all smb2/3 dialects but seal is only available on smb3 and later.

On Fri, Aug 14, 2020 at 8:56 AM Damián Parrino notifications@github.com wrote:

Great, thanks for looking into it @sahlberg https://github.com/sahlberg 👍

I can confirm that the change in the 32bits to 16bits endianness fixed the connection issue from the PS3. 😄

Also, I confirm that using the "Guest" user doesn't work with the library. When I tried from my computer with smbutil view -g // 192.168.1.40 it did work. But my smb_basic_test() code rejects the connection with:

smb2_connect_share failed. Session setup failed with (0xc0000022) STATUS_ACCESS_DENIED

Now, when using the correct user/password, I've got a valid connection:

[2020-08-13 22:24:09] init context SUCCEEDED.

[2020-08-13 22:24:09] connect SUCCEEDED.

btw, I took the library for a short "test drive", and I was able to enumerate the resources available on the Win7 host:

[2020-08-13 22:24:08] ------ UDP (239.255.0.100:30000) network debug logger initialized -----

[2020-08-13 22:24:09] ADMIN$ Remote Admin

[2020-08-13 22:24:09] DISKTREE

[2020-08-13 22:24:09] HIDDEN

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] C$ Default share

[2020-08-13 22:24:09] DISKTREE

[2020-08-13 22:24:09] HIDDEN

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] IPC$ Remote IPC

[2020-08-13 22:24:09] IPC

[2020-08-13 22:24:09] HIDDEN

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] Print to PDF (Mac Desktop) Print to PDF (Mac Desktop)

[2020-08-13 22:24:09] PRINTQ

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] print$ Printer Drivers

[2020-08-13 22:24:09] DISKTREE

[2020-08-13 22:24:09]

[2020-08-13 22:24:09] Users

[2020-08-13 22:24:09] DISKTREE

shall I do a PR to submit my changes and add PlayStation 3 as a supported platform?

thanks again, cheers

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sahlberg/libsmb2/issues/155#issuecomment-673749710, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADY3EEP4BEBSD4YEYETSZDSARVTRANCNFSM4P5NE7UA .

bucanero commented 4 years ago

About ps3 homebrew, I regularly talk on dev-forums with aldostools, author/maintainer of some well known managers like webMAN MOD and IRISMAN. I also share messages with ManaGunZ's author (Zar). They had already included some of my ported libs such as unrar, un7zip, and some other misc stuff I've been working, so hopefully if they have time, they could add SMB support too.

No worries about the Guest stuff, I was mostly reporting to complete the info from my first attempt. As you said, the option is on the way out so most users with current/updated systems won't be using it at all.

Regarding signing/encryption, when running my test to enumerate resources, I used:

        smb2_set_security_mode(smb2, SMB2_NEGOTIATE_SIGNING_ENABLED);

it worked fine, but if I need to try with smb2_set_sign() let me know.

For the seal/encryption, if it needs SMBv3 I assume my Win7 host won't do it. I think I have a newer Win8 laptop that I can use for testing this scenario. When I do the tests I'll ping back.

btw, I've been also working on porting libnfs to the PS3. Right now I've a working version 😄 , but it was a dirty/hacky job. I'll try to clean up my changes, so I can submit it for your review.

cheers!

sahlberg commented 4 years ago

On Fri, Aug 14, 2020 at 11:10 AM Damián Parrino notifications@github.com wrote:

About ps3 homebrew, I regularly talk on dev-forums with aldostools, author/maintainer of some well known managers like webMAN MOD and IRISMAN. I also share messages with ManaGunZ's author (Zar). They had already included some of my ported libs such as unrar, un7zip, and some other misc stuff I've been working, so hopefully if they have time, they could add SMB support too.

No worries about the Guest stuff, I was mostly reporting to complete the info from my first attempt. As you said, the option is on the way out so most users with current/updated systems won't be using it at all.

Regarding signing/encryption, when running my test to enumerate resources, I used:

    smb2_set_security_mode(smb2, SMB2_NEGOTIATE_SIGNING_ENABLED);

it worked fine, but if I need to try with smb2_set_sign() let me know.

That should be fine. If something doesn;t work then they can just open a bug with me and I will try to look into it.

Anyway, awesome work. I am really excited about this. Do you have a link to a good place to find instructions on how to set up the ps3 development environment? When I get some time I would like to try to play with it.

For the seal/encryption, if it needs SMBv3 I assume my Win7 host won't do it. I think I have a newer Win8 laptop that I can use for testing this scenario. When I do the tests I'll ping back.

Don't worry about it for now.

btw, I've been also working on porting libnfs to the PS3. Right now I've a working version , but it was a dirty/hacky job. I'll try to clean up my changes, so I can submit it for your review.

That sounds awesome!

cheers!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

bucanero commented 4 years ago

That should be fine. If something doesn;t work then they can just open a bug with me and I will try to look into it. Anyway, awesome work. I am really excited about this. Do you have a link to a good place to find instructions on how to set up the ps3 development environment? When I get some time I would like to try to play with it.

The open-source PS3 toolchain project can be found here: https://github.com/ps3dev/ps3toolchain The build scripts include the PSL1GHT SDK and some additional general libraries such as zlib, curl, etc.

if you're using Linux or macOS, I've some auto-built binaries available on my forked repo: https://github.com/bucanero/ps3toolchain/releases

last, but not least, since you asked about instructions, some time ago I wrote a basic tutorial to build the ps3 environment from scratch on macOS: http://www.bucanero.com.ar/2019/08/14/building-your-ps3-dev-environment-on-macos/

even if you're not using macOS, the tutorial should help if you want to build a first basic app or test the homebrew binaries on a real PS3. Actually some devs right now are using the RPCS3 emulator to test code, but I still prefer to check on real hardware.

If you need any help with the ps3 dev environment let me know, I'll be happy to help. cheers