don't have the execs... remove them ..
and yes debug the hciattach !!

On Wed, Aug 4, 2010 at 3:01 PM, Ajith Kamath <sjce.aj...@gmail.com> wrote:
> Thats the thing.
> I m not able to find out why 2 times of hciattach is required.
> Also start hciattach and start bluetoothd didn't do anything.
>
> can't i  just use this in init.rc like i do in command line. But the thing
> is this also didn't work. Any modification required?
>
> on boot
>   start dbus
>   exec /system/bin/hciattach -s 115200 /dev/s3c_serial1 any 460800 flow NULL
>   exec /system/bin/hciattach -s 115200 /dev/s3c_serial1 bcm2035 460800 flow
> NULL
>
>
> I m badly stuck on this.. Is there anything to be done in hciattach.c file??
>
> Thanks,
> Ajith
>
>
> On Wed, Aug 4, 2010 at 2:36 PM, Pavan Savoy <pavan.sa...@gmail.com> wrote:
>>
>> ok basic BT start-up on android happens in system/bluetooth/bluedroid..
>> it has to do ..
>> 1. set power i.e write 1 to /sys/class/rfkill/rfkill0/state
>> 2. run hciattach ..via the start hciattach ..
>> 3. ioctl DEVUP to hci0 ..
>> 4. run bluetooth via doing a start bluetoothd..
>>
>> I have no idea why in your case hciattach need to be run twice.. it need
>> not..
>> and also when I mentioned start bluetoothd i meant
>> $ start bluetoothd
>>
>> basically start <service> starts up the service mentioned in init.rc..
>> so in your case mention hciattach in your init.rc
>> and then try and do start hciattach from cmd line...  if this doens't
>> work then BT on from UI will also not work..
>>
>>
>>
>>
>> On Wed, Aug 4, 2010 at 2:31 PM, Ajith Kamath <sjce.aj...@gmail.com> wrote:
>> > Hiattach has bcm specific initialisation.
>> >
>> > Till now to run BT I didn't do start bluetoothd command.
>> > Also after 2 hciattach's when i manaually give hciconfig hci0 up, it
>> > gives
>> > me Connection timed out(110) error.
>> > But inspite of this BT will be start when clicked , since i have given
>> > those
>> > 2 commands( i guess)
>> >
>> > I used to check /sys/class/rfkill/rfkill0 for power state.
>> > Here state will be 1 when boot up.
>> > Is this right parameter to check?
>> >
>> > I also checked with 2 hciattach's in init.rc , It didn't work either.
>> > Also , if i give bluetoothd -start i get this :
>> > # bluetoothd -start
>> > bluetoothd -start
>> > ** (process:2648): CRITICAL (recursed) **: g_convert_with_fallback:
>> > assertion `to_codeset != NULL' failed
>> > aborting...
>> > [1] + Stopped (signal)        bluetoothd -start
>> >
>> > Further, When bluetooth starts successfully(cmd line - 2 commands) heres
>> > log:
>> >
>> > 01-01 00:24:58.711: INFO/ActivityManager(2509): Displayed activity
>> > com.android.settings/.bluetooth.BluetoothSettings: 310 ms (total 310 ms)
>> > 01-01 00:24:59.806: DEBUG/BluetoothService(2509): Bluetooth state 0 -> 1
>> > 01-01 00:25:02.030: INFO/bluedroid(2509): Starting hciattach daemon
>> > 01-01 00:25:02.061: INFO/bluedroid(2509): Starting bluetoothd deamon
>> > 01-01 00:25:05.311: ERROR/BluetoothEventLoop.cpp(2509): event_filter:
>> > Received signal org.freedesktop.DBus:NameAcquired from
>> > /org/freedesktop/DBus
>> > 01-01 00:25:05.416: DEBUG/BluetoothService(2509): Bluetooth state 1 -> 2
>> > 01-01 00:25:05.456: DEBUG/dalvikvm(2616): GC freed 1276 objects / 95736
>> > bytes in 440ms
>> > 01-01 00:25:05.471: VERBOSE/A2dpAudioInterface(1880): setParameters()
>> > bluetooth_enabled=true
>> > 01-01 00:25:05.551: ERROR/BluetoothEventLoop.cpp(2509): event_filter:
>> > Received signal org.bluez.Adapter:PropertyChanged from
>> > /org/bluez/2482/hci0
>> > 01-01 00:25:05.571: INFO/bluetooth_ScoSocket.cpp(2550): Listening SCO
>> > socket...
>> > 01-01 00:25:05.671: INFO/BluetoothPbapService(2616): Starting PBAP
>> > service
>> > 01-01 00:25:05.706: DEBUG/dalvikvm(2976): GC freed 3503 objects / 212264
>> > bytes in 167ms
>> > 01-01 00:25:14.666: INFO/BtOpp RfcommListener(2616): Accept thread
>> > started
>> > on channel 12
>> > 01-01 00:25:15.816: ERROR/BluetoothEventLoop.cpp(2509): event_filter:
>> > Received signal org.bluez.Adapter:PropertyChanged from
>> > /org/bluez/2482/hci0
>> >
>> >
>> > When error, this is the log:
>> >
>> > 01-01 00:01:24.536: INFO/ActivityManager(1928): Displayed activity
>> > com.android.settings/.bluetooth.BluetoothSettings: 306 ms (total 306 ms)
>> > 01-01 00:01:25.181: DEBUG/BluetoothService(1928): Bluetooth state 0 -> 1
>> > 01-01 00:01:27.386: INFO/bluedroid(1928): Starting hciattach daemon
>> > 01-01 00:01:30.411: DEBUG/dalvikvm(2020): GC freed 2082 objects / 181736
>> > bytes in 67ms
>> > 01-01 00:01:37.571: ERROR/bluedroid(1928): bt_enable: Timeout waiting
>> > for
>> > HCI device to come up
>> > 01-01 00:01:37.571: DEBUG/BluetoothService(1928): Bluetooth state 1 -> 0
>> > 01-01 00:01:37.681: ERROR/libdbus(1928): arguments to
>> > dbus_message_new_method_call() were incorrect, assertion "path != NULL"
>> > failed in file external/dbus/dbus/dbus-message.c line 1070.
>> > 01-01 00:01:37.681: ERROR/libdbus(1928): This is normally a bug in some
>> > application using the D-Bus library.
>> > 01-01 00:01:37.681: DEBUG/libc-abort(1928): abort() called in pid 1928
>> > 01-01 00:01:37.721: INFO/DEBUG(1877): *** *** *** *** *** *** *** ***
>> > ***
>> > *** *** *** *** *** *** ***
>> > 01-01 00:01:37.721: INFO/DEBUG(1877): Build fingerprint:
>> >
>> > 'Samsung/SPH-M900/SPH-M900/SPH-M900:2.1-update1/ECLAIR/DH02:eng/test-keys'
>> > 01-01 00:01:37.721: INFO/DEBUG(1877): pid: 1928, tid: 2033  >>>
>> > system_server <<<
>> > 01-01 00:01:37.721: INFO/DEBUG(1877): signal 11 (SIGSEGV), fault addr
>> > deadbaad
>> > 01-01 00:01:37.721: INFO/DEBUG(1877):  r0 00000027  r1 afe2f218  r2
>> > afe2f23d  r3 afe10635
>> > 01-01 00:01:37.721: INFO/DEBUG(1877):  r4 afe37e08  r5 afe2f218  r6
>> > deadbaad  r7 ae833d7d
>> > 01-01 00:01:37.721: INFO/DEBUG(1877):  r8 47b5eb80  r9 444e6eb8  10
>> > 444e6ea0  fp 002554e0
>> > 01-01 00:01:37.721: INFO/DEBUG(1877):  ip 000a3832  sp 47b5ea18  lr
>> > afe1f34d  pc afe1063e  cpsr a0000030
>> > 01-01 00:01:37.781: DEBUG/dalvikvm(2104): GC freed 3477 objects / 211640
>> > bytes in 174ms
>> > 01-01 00:01:37.851: INFO/DEBUG(1877):          #00  pc 0001063e
>> > /system/lib/libc.so
>> > 01-01 00:01:37.851: INFO/DEBUG(1877):          #01  pc 0002c28c
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.851: INFO/DEBUG(1877):          #02  pc 00016086
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.851: INFO/DEBUG(1877):          #03  pc 00020db0
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.851: INFO/DEBUG(1877):          #04  pc 0004d450
>> > /system/lib/libandroid_runtime.so
>> > 01-01 00:01:37.851: INFO/DEBUG(1877):          #05  pc 0004d56a
>> > /system/lib/libandroid_runtime.so
>> > 01-01 00:01:37.861: INFO/DEBUG(1877):          #06  pc 0004f176
>> > /system/lib/libandroid_runtime.so
>> > 01-01 00:01:37.861: INFO/DEBUG(1877):          #07  pc 0000f174
>> > /system/lib/libdvm.so
>> > 01-01 00:01:37.861: INFO/DEBUG(1877):          #08  pc 00037f16
>> > /system/lib/libdvm.so
>> > 01-01 00:01:37.861: INFO/DEBUG(1877):          #09  pc 0003159a
>> > /system/lib/libdvm.so
>> > 01-01 00:01:37.861: INFO/DEBUG(1877):          #10  pc 00013ed8
>> > /system/lib/libdvm.so
>> > 01-01 00:01:37.866: INFO/DEBUG(1877):          #11  pc 000196b4
>> > /system/lib/libdvm.so
>> > 01-01 00:01:37.866: INFO/DEBUG(1877):          #12  pc 00018c88
>> > /system/lib/libdvm.so
>> > 01-01 00:01:37.866: INFO/DEBUG(1877):          #13  pc 0004dbd2
>> > /system/lib/libdvm.so
>> > 01-01 00:01:37.866: INFO/DEBUG(1877):          #14  pc 0003b324
>> > /system/lib/libdvm.so
>> > 01-01 00:01:37.866: INFO/DEBUG(1877):          #15  pc 0002d674
>> > /system/lib/libdvm.so
>> > 01-01 00:01:37.871: INFO/DEBUG(1877):          #16  pc 0003d202
>> > /system/lib/libandroid_runtime.so
>> > 01-01 00:01:37.871: INFO/DEBUG(1877):          #17  pc 0003d514
>> > /system/lib/libandroid_runtime.so
>> > 01-01 00:01:37.871: INFO/DEBUG(1877):          #18  pc 0001540c
>> > /system/lib/libbinder.so
>> > 01-01 00:01:37.871: INFO/DEBUG(1877):          #19  pc 00018ae4
>> > /system/lib/libbinder.so
>> > 01-01 00:01:37.896: INFO/DEBUG(1877):          #20  pc 00018cb2
>> > /system/lib/libbinder.so
>> > 01-01 00:01:37.896: INFO/DEBUG(1877):          #21  pc 0001f33c
>> > /system/lib/libbinder.so
>> > 01-01 00:01:37.896: INFO/DEBUG(1877):          #22  pc 0001b60c
>> > /system/lib/libutils.so
>> > 01-01 00:01:37.896: INFO/DEBUG(1877):          #23  pc 0002886e
>> > /system/lib/libandroid_runtime.so
>> > 01-01 00:01:37.896: INFO/DEBUG(1877):          #24  pc 0001ba36
>> > /system/lib/libutils.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):          #25  pc 0000f8d0
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):          #26  pc 0000f3a4
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877): stack:
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9d8  47b5ea14
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9dc  afe13ab3
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9e0  afe3802c
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9e4  afe37fd8
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9e8  00000000
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9ec  afe13ce5
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9f0  00000000
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9f4  be596834
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9f8  00015e58  [heap]
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5e9fc  afe37e08
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5ea00  afe2f218
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5ea04  00002ed8
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5ea08  ae833d7d
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5ea0c  afe10635
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5ea10  df002777
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5ea14  e3a070ad
>> > 01-01 00:01:37.901: INFO/DEBUG(1877): #00 47b5ea18  afe37fd8
>> > /system/lib/libc.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5ea1c  ae83a22c
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.901: INFO/DEBUG(1877):     47b5ea20  ae833d7d
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.921: INFO/DEBUG(1877):     47b5ea24  afe176cf
>> > /system/lib/libc.so
>> > 01-01 00:01:37.921: INFO/DEBUG(1877):     47b5ea28  ae833d7d
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.921: INFO/DEBUG(1877):     47b5ea2c  fffffbdf
>> > 01-01 00:01:37.921: INFO/DEBUG(1877):     47b5ea30  ae8423c4
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.921: INFO/DEBUG(1877):     47b5ea34  afe37fd8
>> > /system/lib/libc.so
>> > 01-01 00:01:37.921: INFO/DEBUG(1877):     47b5ea38  ae83a22c
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.921: INFO/DEBUG(1877):     47b5ea3c  ae82c28f
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.921: INFO/DEBUG(1877): #01 47b5ea40  ae8423c4
>> > /system/lib/libdbus.so
>> > 01-01 00:01:37.921: INFO/DEBUG(1877):     47b5ea44  ae81608b
>> > /system/lib/libdbus.so
>> > 01-01 00:01:40.816: INFO/ActivityThread(2094): Removing dead content
>> > provider: settings
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):
>> > android.os.DeadObjectException
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > android.os.BinderProxy.transact(Native Method)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > android.bluetooth.IBluetooth$Stub$Proxy.getAddress(IBluetooth.java:400)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > android.bluetooth.BluetoothAdapter.getAddress(BluetoothAdapter.java:168)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> >
>> > com.android.bluetooth.pbap.BluetoothPbapService.onCreate(BluetoothPbapService.java:196)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > android.app.ActivityThread.handleCreateService(ActivityThread.java:2686)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > android.app.ActivityThread.access$3100(ActivityThread.java:116)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > android.app.ActivityThread$H.handleMessage(ActivityThread.java:1848)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > android.os.Handler.dispatchMessage(Handler.java:99)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > android.os.Looper.loop(Looper.java:123)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > android.app.ActivityThread.main(ActivityThread.java:4208)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > java.lang.reflect.Method.invokeNative(Native Method)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > java.lang.reflect.Method.invoke(Method.java:521)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> >
>> > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:850)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
>> > 01-01 00:01:40.821: ERROR/BluetoothAdapter(2073):     at
>> > dalvik.system.NativeStart.main(Native Method)
>> > 01-01 00:01:40.826: INFO/ServiceManager(1875): service 'batteryinfo'
>> > died
>> > 01-01 00:01:40.826: INFO/ServiceManager(1875): service
>> > 'activity.services'
>> > died
>> > 01-01 00:01:40.826: INFO/ServiceManager(1875): service 'usagestats' died
>> >
>> > and all service die and it restarts.
>> >
>> > Can you please advice on this
>> >
>> > Thanks ,
>> > Ajith
>> >
>> >
>> >
>> >
>> >
>> > On Wed, Aug 4, 2010 at 2:02 PM, Pavan Savoy <pavan.sa...@gmail.com>
>> > wrote:
>> >>
>> >> there should really be on 1 hciattach, i.e it needs to be run once..
>> >> I guess with mentioning bcmxxxx, the hciattach would have a custom
>> >> _init and _post function which does BCM specific initialization, like
>> >> setting baud-rate via HCI-VS and fw download...
>> >>
>> >> but via cmd line.. you should probably be doing an start bluetoothd
>> >> before doing hciattach, in case hciattach also needs hci0 to be up ...
>> >>
>> >> also how do you make sure chip is ON ?
>> >> Is it ON always? on boot ?
>> >>
>> >> On Wed, Aug 4, 2010 at 1:59 PM, Ajith Kamath <sjce.aj...@gmail.com>
>> >> wrote:
>> >> > Hi Pavan,
>> >> > But doing only hciattach with device type as 'any' doesn't work.( I
>> >> > tried
>> >> > that now , inside init.rc)
>> >> > Do i need to put second hciattach with dev type as 'bcm2035' in
>> >> > init.rc???
>> >> >
>> >> > Also in command line only after exceution of both commands , i get
>> >> > buletooth
>> >> > running.
>> >> > I stumbled across this by accident. But to do have anyidea why is it
>> >> > needed
>> >> > twice?
>> >> >
>> >> > When I run command with dev type any i get :
>> >> > #hciattach -s 115200 /dev/s3c_serial1 any 460800 flow NULL
>> >> > hciattach -s 115200 /dev/s3c_serial1 any 460800 flow NULL
>> >> > Device setup complete
>> >> >
>> >> > Next when I run with bcm2035 i get:
>> >> > # hciattach -s 115200 /dev/s3c_serial1 bcm2035 460800 flow NULL
>> >> > hciattach -s 115200 /dev/s3c_serial1 bcm2035 460800 flow NULL
>> >> > Failed to write reset command
>> >> > Can't initialize device: Unknown error: 0
>> >> >
>> >> >
>> >> > But only after I completed both the steps, BT will be up. Else, it
>> >> > will
>> >> > restart the device.
>> >> > Also if i directly start off with bcm2035 it give me initialization
>> >> > timed
>> >> > out error.
>> >> > Any advice??
>> >> >
>> >> > Thanks,
>> >> > Ajith
>> >> >
>> >> > On Wed, Aug 4, 2010 at 12:19 PM, Pavan Savoy <pavan.sa...@gmail.com>
>> >> > wrote:
>> >> >>
>> >> >> On Wed, Aug 4, 2010 at 12:19 PM, Pavan Savoy <pavan.sa...@gmail.com>
>> >> >> wrote:
>> >> >> > #service hciattachd /system/bin/hciattach -s 115200
>> >> >> > /dev/s3c_serial1
>> >> >> > any 460800 flow NULL
>> >> >> >        #user root
>> >> >> >        #group bluetooth net_bt_admin
>> >> >> >        #disabled
>> >> >> >    #oneshot
>> >> >> >
>> >> >> > is almost correct except for the hciattach"d" part..
>> >> >> > so your entry should be ...
>> >> >> >
>> >> >> > service hciattach /system/bin/hciattach -s 115200 /dev/s3c_serial1
>> >> >> > any
>> >> >> > 460800 flow NULL
>> >> >> >        user root
>> >> >> >        group bluetooth net_bt_admin
>> >> >> >        disabled
>> >> >> >    oneshot
>> >> >> >
>> >> >> > And no there is no hcid anymore since bluez4.x.. it is now
>> >> >> > bluetoothd.. which you have it properly..
>> >> >> >
>> >> >> > Assuming you have your rfkill driver in right place, and it has
>> >> >> > exposed the /sys/class/rfkill/rfkill0/state entry .. everything
>> >> >> > should
>> >> >> > automagically work !!
>> >> >> >
>> >> >> >
>> >> >> > On Wed, Aug 4, 2010 at 11:57 AM, Ajith Kamath
>> >> >> > <sjce.aj...@gmail.com>
>> >> >> > wrote:
>> >> >> >> Hi all,
>> >> >> >>
>> >> >> >> I'm able to start bluetooth after porting only from command line.
>> >> >> >> I give following commands and it works
>> >> >> >>
>> >> >> >> #hciattach -s 115200 /dev/s3c_serial1 any 460800 flow NULL
>> >> >> >> #hciattach -s 115200 /dev/s3c_serial1 bcm2035 460800 flow NULL
>> >> >> >>
>> >> >> >> Doing this brings bluetooth up for me.
>> >> >> >> But I want to put this in init.rc file so that it happens in boot
>> >> >> >> itself.
>> >> >> >> But its not working.
>> >> >> >> Can someone tell how to put it in init.rc
>> >> >> >>
>> >> >> >> Also from references i have realised that hcid is not at all
>> >> >> >> there
>> >> >> >> in
>> >> >> >> system/bin or in data/misc/hcid
>> >> >> >> Can some one please advice on this.
>> >> >> >>
>> >> >> >> commented parts in init.rc relating to bluetooth are things I
>> >> >> >> tried
>> >> >> >> but
>> >> >> >> didn't work
>> >> >> >>
>> >> >> >> Thanks,
>> >> >> >> Ajith
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> --
>> >> >> >> unsubscribe: android-porting+unsubscr...@googlegroups.com
>> >> >> >> website: http://groups.google.com/group/android-porting
>> >> >> >>
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > --
>> >> >> > --Pavan Savoy
>> >> >> >
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> --Pavan Savoy
>> >> >>
>> >> >> --
>> >> >> unsubscribe: android-porting+unsubscr...@googlegroups.com
>> >> >> website: http://groups.google.com/group/android-porting
>> >> >
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> --Pavan Savoy
>> >
>> >
>>
>>
>>
>> --
>> --Pavan Savoy
>
>



-- 
--Pavan Savoy

-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-porting

Reply via email to